【发布时间】:2010-11-11 21:06:09
【问题描述】:
我已经为此工作了 3 个小时并放弃了。 我只是想使用 jQuery 将数据发送到 ASP.NET WebMethod。 数据基本上是一堆键/值对。所以我尝试创建一个数组并将这些对添加到该数组中。
我的 WebMethod (aspx.cs) 看起来像这样(这对于我在 JavaScript 中构建的内容可能是错误的,我只是不知道):
[WebMethod]
public static string SaveRecord(List<object> items)
{
...
}
这是我的示例 JavaScript:
var items = new Array;
var data1 = { compId: "1", formId: "531" };
var data2 = { compId: "2", formId: "77" };
var data3 = { compId: "3", formId: "99" };
var data4 = { status: "2", statusId: "8" };
var data5 = { name: "Value", value: "myValue" };
items[0] = data1;
items[1] = data2;
items[2] = data3;
items[3] = data4;
items[4] = data5;
这是我的 jQuery AJAX 调用:
var options = {
error: function(msg) {
alert(msg.d);
},
type: "POST",
url: "PackageList.aspx/SaveRecord",
data: { 'items': items },
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
success: function(response) {
var results = response.d;
}
};
jQuery.ajax(options);
我得到错误:
Invalid JSON primitive: items.
所以,如果我这样做:
var DTO = { 'items': items };
并像这样设置数据参数:
data: JSON.stringify(DTO)
然后我得到这个错误:
Cannot convert object of type \u0027System.String\u0027 to type \u0027System.Collections.Generic.List`1[System.Object]\u0027
【问题讨论】:
-
改变你的 web 方法来接受一个普通的旧 Object,然后看看这个对象到底是什么,然后在 web 方法中转换和处理它。
-
问题是,您使用的是 webmethods,但没有使用为您自动生成的 JavaScript 代理类?
-
感谢 Cory,我最初确实将 hte web 方法更改为接受一个普通对象,这帮助我弄清楚了会发生什么。谢谢!
标签: asp.net javascript jquery ajax json