我知道有更多关于此事的线索,但他们不帮助我,我在这里疯了!
我想使用jQuery Ajax将一些参数传递给Web方法。
var paramList = '';
for(i = 0; i < IDList.length; i++){
if (paramList.length > 0) paramList += ',';
paramList += '"' + 'id' + '":"' + IDList[i].value + '"';
}
paramList = '{' + paramList + '}';
var jsonParams = JSON.stringify(paramList);
$.ajax({
type: "POST",
url: "editactivity.aspx/UpdateSequenceNumber",
data: jsonParams,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(response) {
}
});
在ajax调用中,如果我将数据放入paramList,我会收到错误:“无效的Web服务调用,缺少参数值:\ u0027a \ u0027。”
如果我将数据放到jsonParams,我会收到错误:
“无法将类型为\ u0027System.String \ u0027的对象转换为键入 \ u0027System.Collections.Generic.IDictionary`2 [System.String,System.Object的] \ u0027"
如果我写出paramList
,它就会采用正确的JSON格式,例如{"id":"140", "id":"138"}
如果我写出jsonParams
,则表示格式不正确,如"{\"id\":\"140\",\"id\":\"138\"}"
网络方法:(它还没那么多......)
[System.Web.Services.WebMethod]
public static string UpdateSequenceNumber(string a, string b)
{
return a+b;
}
我做错了什么?似乎无法让这个JSON正确。
更新
在第一个回答得到一些帮助后,我现在在AJAX请求中发送{"id":["138","140"]}
。
现在,Web方法将一个名为id
的字符串作为参数。
[System.Web.Services.WebMethod]
public static string UpdateSequenceNumber(string id)
{
return id;
}
现在我收到了新的错误:
“类型\ u0027System.Array \ u0027不支持反序列化 一个数组。“
答案 0 :(得分:15)
您的json参数名称必须与c#参数名称相同。
{"a":"140", "b":"138"}
如果要向服务器发送未知数量的参数,可以在客户端将其连接到一个参数中,然后在服务器端进行拆分。