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上的方法签名是什么?作为如何处理参数的背景,您可以看到您所建议的所有更改仍然得到相同的错误