Asp.net 使用jQuery.Ajax()将对象传递到服务器时出现问题
我正在尝试实现中提到的相同代码 目前我有以下代码:Asp.net 使用jQuery.Ajax()将对象传递到服务器时出现问题,asp.net,jquery,ajax,Asp.net,Jquery,Ajax,我正在尝试实现中提到的相同代码 目前我有以下代码: var pagePath = window.location.pathname; var paramList = ''; if (paramArray.length > 0) { for (var i = 0; i < paramArray.length; i ++) { if (paramList.length > 0) paramList += ','; paramList += "{'id':'" + par
var pagePath = window.location.pathname;
var paramList = '';
if (paramArray.length > 0) {
for (var i = 0; i < paramArray.length; i ++) {
if (paramList.length > 0) paramList += ',';
paramList += "{'id':'" + paramArray[i].id + "',
'collapsed':'" + paramArray[i].collapsed + "',
'order':'" + paramArray[i].order + "',
'column':'" + paramArray[i].column + "'}";
}
}
paramList = '[' + paramList + ']';
$.ajaxSetup({ cache: false });
//Call the page method
$.ajax({
type: "POST",
url: pagePath + "/" + fn,
contentType: "application/json; charset=utf-8",
data: "{'items': **'**" + $.toJSON(paramList) + "**'**}",
数据类型:json,
成功:成功fn,
错误:errorFn
};
我正在尝试将此数据传递给WebMethod
[WebMethod]
public static String SaveData(Dictionary<String, Object>[] items)
问题是我一直收到错误500内部服务器错误。
我很确定是数据类型导致了这个问题,但我就是想不出来。
有什么想法吗?您的服务是否用[ScriptService]属性装饰 星号是怎么回事?这是我没拿到备忘录的新宏吗
"{'items': **'**" + $.toJSON(paramList) + "**'**}"
试一试
{'items':+$.toJSONparamList+}
在我看来,您已经在创建json了。不需要toJSON
尝试用双引号替换单引号。e、 g
'{"items": ' + paramList + '}'
您的post数据应该如下所示
'{
"items": [{
"id": "1",
"collapsed": "0",
"order": "0",
"column": "column2"
},
{
"id": "2",
"collapsed": "1",
"order": "1",
"column": "column2"
},
{
"id": "3",
"collapsed": "0",
"order": "0",
"column": "column3"
}]
}'
内联
'{ "items": [{ "id": "1", "collapsed": "0", "order": "0", "column": "column2" }, { "id": "2", "collapsed": "1", "order": "1", "column": "column2" }, { "id": "3", "collapsed": "0", "order": "0", "column": "column3" }]}'
var paramList = "";
if (paramArray.length > 0) {
for (var i = 0; i < paramArray.length; i ++) {
if (paramList.length > 0) paramList += ",";
paramList += '{"id":"' + paramArray[i].id + '",
"collapsed":"' + paramArray[i].collapsed + '",
"order":"' + paramArray[i].order + '",
"column":"' + paramArray[i].column + '"}';
}
}
paramList = "[" + paramList + "]";
$.ajaxSetup({ cache: false });
//Call the page method
$.ajax({
type: 'POST',
url: pagePath + '/' + fn,
contentType: 'application/json; charset=utf-8',
data: '{"items":' + paramList + '}', // the rest of your function is missing
您是否查看过例如firebug,您的帖子数据是什么样子的?JSON字符串中的星号在我看来有点奇怪。我认为您不需要序列化paramList,您已经完成了。现在您只需要发送一个字符串。看看我的答案。我认为如果参数与pagemethodyeah used firebug匹配,并且我的帖子数据如下:[{'id':'1','column':'0','column':'column2'},{'id':'2','column':'1','order':'1','column':'column2'},{'id':'3','column':'0','column':'column3'}]您希望您的paramList字符串看起来类似于这个var postData='{input:{Name:Foo,Age:21}}';请注意,param names未被引用,integer未被引用,如果有bool,则不会被引用。请参阅我在答案下面链接的文章中的清单6和7。你就快到了。现在pagemethod签名看起来像什么?不,我没有使用[ScriptService],因为我使用的是页面方法而不是服务。从我发布的链接中得到星号。。。将其更改为您的建议,但我仍然收到错误500:pagemethod上的方法签名是什么?作为如何处理参数的背景,您可以看到您所建议的所有更改仍然得到相同的错误