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; }    }

任何人都可以提供任何关于问题所在的建议吗?

Jquery Ajax POST to C# WebMethod 错误,带有“无效的 JSON 原语:System.Ob

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已经为您反序列化了,因此您无需进一步执行任何操作