Jquery Ajax POST to C# WebMethod 错误,带有“无效的 JSON 原语:System.Ob
本文关键字:无效的 无效 JSON 原语 Ob System 带有 to POST Ajax WebMethod | 更新日期: 2023-09-27 18:30:34
早上全部。几个星期以来,我一直在尝试这样做,但一直在兜圈子。我有一个简单的jQuery Ajax函数,它将数据发布到代码隐藏中的c#函数。
基本上想要传递要处理的选定复选框字段的列表。当我提交它时,我可以看到正在发出的请求和正在发送的 json:
{"item":["Section1","Section2","Section2Sub1","Section2Sub2","Section3"]}
它到达服务器端,但是当尝试反序列化它时,它会给我回踢以下错误消息:
"无效的 JSON 原语:System.Object。
var selection = serializer.Deserialize<string>(item.ToString());
这是我的代码片段:
客户端 $("#Submit").click(function (e) { 变量计数 = 0; 变量计数已检查 = 0; areaObj = []; $('input[type=checkbox]').each(function () { 计数++; if (this.checked) { 计数检查++; TMP = { "Area": $(this).attr("id") //}; areaObj.push($(this).attr("id")); } }); }); 函数子点击(项) { $.ajax({ 类型:"开机自检", url: "默认.aspx/子数据", data: JSON.stringify({ item: item }), data: "{'item':" + JSON.stringify(item) + "}", 数据类型:"json", 内容类型:"应用程序/json;字符集=UTF-8" }); };c# 默认值.aspx.cs[网络方法] 公共静态字符串子数据(选择项) { var serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); 此处发生错误 var 选择 = 序列化程序。反序列化(项目。ToString()); 返回"这很成功"; } 公开课选拔 { 公共字符串 Title { get; set; } 公共字符串 描述 { get; set; } public list keyValues { get; set; } } 公共类键值 { public int AreaID { get; set; } 公共字符串区域 { get; set; } public int value { get; set; } }
任何人都可以提供任何关于问题所在的建议吗?
public static string SubData(Selection item)
{
var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
//ERROR OCCURS HERE
var selection = serializer.Deserialize(item.ToString());
return "this is successful";
}
在这里,item
不是字符串(因此不是正在发送的 JSON)。由于您正在对其调用ToString()
,因此库很可能正在尝试反序列化类似于System.Object
的文本 - 这将失败。
快速浏览一下代码,看起来item
已经为您反序列化了,因此您无需进一步执行任何操作