我不需要任何花哨或复杂的东西,我只是想将一个简单的字符串作为参数传递给我的web方法。我该怎么办?
这是Web方法调用 [的WebMethod] public static ArrayList GetColumns(string TorVName)
这是JSON调用:
<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>
以下是我的网络方法的精髓:
public static ArrayList GetColumns(string TorVName)
{
String cnstr = "myconnectstring";
//string TorVName = System.Web.HttpContext.Current.Request.QueryString["TableOrViewName"];
//string TorVName = "Aged";
//JavaScriptSerializer serializer = new JavaScriptSerializer();
string TorVName = System.Web.HttpContext.Current.Request.QueryString["TOrVName"].ToString();
string Sql = String.Empty;
我觉得愚蠢而令人沮丧的是,这需要如此复杂和困难。
感谢Dean
答案 0 :(得分:0)
如果我理解你想要什么,你只需要在你的ajax调用中将查询字符串附加到你的网址:
url: "Default.aspx/GetColumns?param=value",
答案 1 :(得分:0)
我无法理解你想要什么。无论如何,从我的角度来看,我看到你正在使用JQuery。我编写了一个JQuery插件来更轻松地调用ajax方法。你可以从http://www.4shared.com/file/Y72VBeLc/PageMethod.html下载它
用法:
$.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.");
}
答案 2 :(得分:0)
在ajax请求中,对于data参数,请执行以下操作:
data: "myData=" + jsonData,
然后在你的web方法中,将参数匹配为“myData”,如下所示:
[WebMethod()]
public static ArrayList GetColumns(string myData)
{
.....Your code
}
如果名称相同,您的Web方法足够智能,可以将参数与参数匹配。一旦收到字符串,就可以反序列化它并调用非web方法来实例化自定义数据对象。