gpt4 book ai didi

asp.net - 使用 jQuery 将 JSON 对象成功发送到 ASP.NET WebMethod

转载 作者:行者123 更新时间:2023-12-03 21:44:56 26 4
gpt4 key购买 nike

我已经为此工作了 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

最佳答案

在您的示例中,如果您的数据参数是:

data: "{'items':" + JSON.stringify(items) + "}"

请记住,您需要将 JSON 字符串发送到 ASP.NET AJAX。如果您指定实际的 JSON 对象作为 jQuery 的数据参数,它会将其序列化为 &k=v?k=v 对。

看起来你已经读过它了,但是再看看我的 example of using a JavaScript DTO with jQuery, JSON.stringify, and ASP.NET AJAX 。它涵盖了完成这项工作所需的一切。

注意:您永远不应该使用 JavaScriptSerializer 在“ScriptService”中手动反序列化 JSON(如其他人的建议)。它会根据方法参数的指定类型自动为您执行此操作。如果您发现自己这样做,那么您就做错了。

关于asp.net - 使用 jQuery 将 JSON 对象成功发送到 ASP.NET WebMethod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1146110/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com