C# 在web方法中访问JSON调用的参数
我不需要任何花哨或复杂的东西,我只是尝试将一个简单的字符串作为参数传递给我的web方法。我怎么做 下面是web方法调用 [网络方法] 公共静态ArrayList GetColumns(字符串TorVName) 以下是JSON调用:C# 在web方法中访问JSON调用的参数,c#,javascript,json,C#,Javascript,Json,我不需要任何花哨或复杂的东西,我只是尝试将一个简单的字符串作为参数传递给我的web方法。我怎么做 下面是web方法调用 [网络方法] 公共静态ArrayList GetColumns(字符串TorVName) 以下是JSON调用: <script type="text/javascript" language="javascript"> var qs = new Querystring(); var v1 = qs.get("TorVName"); var jsonDa
<script type="text/javascript" language="javascript">
var qs = new Querystring();
var v1 = qs.get("TorVName");
var jsonData = JSON.stringify(v1);
$().ready(function() {
$.ajax({
type: "POST",
url: "Default.aspx/GetColumns",
data: jsonData,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
var optString = '<option value="-1">Select Column</option>';
$.each(msg.d, function(index, item) {
optString += '<option value="' + item + '">' + item + '</option>';
});
$('select[name^=DDLColumns]').html(optString);
},
error: function() {
alert("Failed to load columns");
}
});
});
</script>
我认为这需要如此复杂和困难,这是愚蠢和令人沮丧的
谢谢Dean如果我了解您想要什么,您只需要在ajax调用中将查询字符串附加到url:
url: "Default.aspx/GetColumns?param=value",
如果我了解您想要什么,您只需要在ajax调用中将查询字符串附加到url:
url: "Default.aspx/GetColumns?param=value",
我不明白你到底想要什么。无论如何,从我的观点来看,我看到您正在使用JQuery。我已经编写了一个JQuery插件来更轻松地调用ajax方法。您可以从以下位置下载:
用法:
$.PageMethod('PageMethodName',successFunction,failFunction,'param1',param1',param2',param2,…)代码>
例如:
Javascript:
var myName = 'TestName';
var myId = '123';
$.PageMethod('ReturnCustomData', onSuccess, onFail, 'MyName', myName,'MyID', myId);
代码隐藏:
public class CustomData
{
public string name;
public int id;
}
[WebMethod()]
public static CustomData ReturnCustomData(string MyName, int MyID)
{
CustomData MyData = new CustomData();
MyData.name = MyName;
MyData.id = MyID;
return MyData;
}
success函数可以将序列化的json对象作为返回值。在回调函数中,您可以访问CustomData
function onSuccess(response)
{
alert('Your Name: ' + response.d.name + ', Your ID: ' + response.d.id);
}
function onFail(response)
{
alert("An error occurred.");
}
我不明白你到底想要什么。无论如何,从我的观点来看,我看到您正在使用JQuery。我已经编写了一个JQuery插件来更轻松地调用ajax方法。您可以从以下位置下载:
用法:
$.PageMethod('PageMethodName',successFunction,failFunction,'param1',param1',param2',param2,…)代码>
例如:
Javascript:
var myName = 'TestName';
var myId = '123';
$.PageMethod('ReturnCustomData', onSuccess, onFail, 'MyName', myName,'MyID', myId);
代码隐藏:
public class CustomData
{
public string name;
public int id;
}
[WebMethod()]
public static CustomData ReturnCustomData(string MyName, int MyID)
{
CustomData MyData = new CustomData();
MyData.name = MyName;
MyData.id = MyID;
return MyData;
}
success函数可以将序列化的json对象作为返回值。在回调函数中,您可以访问CustomData
function onSuccess(response)
{
alert('Your Name: ' + response.d.name + ', Your ID: ' + response.d.id);
}
function onFail(response)
{
alert("An error occurred.");
}
在ajax请求中,对于数据参数,按如下方式执行:
data: "myData=" + jsonData,
[WebMethod()]
public static ArrayList GetColumns(string myData)
{
.....Your code
}
然后在web方法中,将参数与“myData”匹配,如下所示:
data: "myData=" + jsonData,
[WebMethod()]
public static ArrayList GetColumns(string myData)
{
.....Your code
}
如果名称相同,您的web方法足够聪明,可以将参数与参数匹配。收到字符串后,可以对其进行反序列化,并调用非webmethod来实例化自定义数据对象。在ajax请求中,对于数据参数,按如下方式执行:
data: "myData=" + jsonData,
[WebMethod()]
public static ArrayList GetColumns(string myData)
{
.....Your code
}
然后在web方法中,将参数与“myData”匹配,如下所示:
data: "myData=" + jsonData,
[WebMethod()]
public static ArrayList GetColumns(string myData)
{
.....Your code
}
如果名称相同,您的web方法足够聪明,可以将参数与参数匹配。收到字符串后,您可以对其进行反序列化,并调用非webmethod来实例化自定义数据对象。如果您不知道我想要什么,为什么要发布?@Lyle如果您无法表达您想要什么,为什么要发布问题?:)@莱尔,正如我所说,这是我从你的帖子中了解到的。我想你的意思是你的代码复杂且困难,我想提供一种更简单的方法。我可以向你展示我的web方法,但数据是私有化的,但是,我成功地将调用传递回ArrayList。我不理解你们的例子,我不会重写我的全部代码,因为我不能通过jsonWell传递一个字符串。我认为你们应该更多地研究从客户端调用web方法。没有必要向我展示您的web方法。没有必要重写整个代码。我猜你根本不了解我的样品。不管怎样,祝你使用ArrayList好运。如果你不知道我想要什么,为什么要发帖?@Lyle如果你不能表达你想要什么,为什么要发帖?:)@莱尔,正如我所说,这是我从你的帖子中了解到的。我想你的意思是你的代码复杂且困难,我想提供一种更简单的方法。我可以向你展示我的web方法,但数据是私有化的,但是,我成功地将调用传递回ArrayList。我不理解你们的例子,我不会重写我的全部代码,因为我不能通过jsonWell传递一个字符串。我认为你们应该更多地研究从客户端调用web方法。没有必要向我展示您的web方法。没有必要重写整个代码。我猜你根本不了解我的样品。无论如何,祝你好运使用ArrayList。另一方面,我如何在我的web方法中访问它;不要认为这很容易,我的web方法不理解Request.QueryString。。正在尝试:string TorVName=System.Web.HttpContext.Current.Request.QueryString[“TorVName”].ToString();没有运气:(另一方面,我如何在我的web方法中访问它?Request.QueryString[“param”];不要认为这很容易,我的web方法不理解Request.QueryString..trying:string TorVName=System.web.HttpContext.Current.Request.QueryString[“TorVName”].ToString();没有运气:(