【问题标题】:Jquery Ajax POST to C# WebMethod Errors with "Invalid JSON primitive: System.Object."Jquery Ajax POST 到 C# WebMethod 错误,带有“无效的 JSON 原语:System.Object”。
【发布时间】:2016-04-19 20:56:10
【问题描述】:

大家早上好。我已经尝试这样做了好几个星期了,但一直在绕圈子。我有一个简单的 jQuery Ajax 函数,可以将数据发布到后面代码中的 c# 函数。

基本上是想传递一个要处理的选中复选框字段的列表。 当我提交它时,我可以看到正在发出的请求和正在发送的 json:

{"item":["Section1","Section2","Section2Sub1","Section2Sub2","Section3"]}

它到达了服务器端,但是在尝试反序列化它时,它让我返回以下错误消息:

“无效的 JSON 原语:System.Object。”

var selection = serializer.Deserialize<string>(item.ToString());

这是我的代码 sn-p:

客户端 $("#Submit").click(函数 (e) { 变量计数 = 0; var countChecked = 0; 面积对象 = []; $('input[type=checkbox]').each(function () { 计数++; 如果(this.checked){ //countChecked++; //tmp = { // "区域": $(this).attr("id") //}; areaObj.push($(this).attr("id")); } }); }); 功能子点击(项目){ $.ajax({ 类型:“发布”, url: "Default.aspx/SubData", 数据:JSON.stringify({ item: item }), //data: "{'item':" + JSON.stringify(item) + "}", 数据类型:“json”, 内容类型:“应用程序/json;字符集=utf-8” }); }; c# Default.aspx.cs [网络方法] 公共静态字符串子数据(选择项) { var serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); //这里发生错误 var selection = serializer.Deserialize(item.ToString()); 返回“这是成功的”; } 公共课选择 { 公共字符串标题 { 获取;放; } 公共字符串描述 { 获取;放; } 公共列表 KeyValues { 获取;放; } } 公共类键值 { 公共 int AreaID { 获取;放; } 公共字符串区域 { 获取;放; } 公共 int 值 { 获取;放; } }

任何人都可以就出了什么问题提供任何指示吗?

【问题讨论】:

  • 您对item.ToString() 的使用向我表明您实际上并没有解析您认为的json。您正在解析文本 System.Object,这是 .ToString() 在对象上的结果。如果你在反序列化行设置断点,你会看到item 不是字符串。
  • 它进一步看起来像item已经反序列化的对象。
  • 拍脑门 当然是。我花了这么长时间看这个,我对它有点雪盲......谢谢罗布!你能“回答问题”,我会把它标记为解决方案
  • 别担心,伙计,很高兴它有帮助:)

标签: c# jquery json ajax


【解决方案1】:
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 似乎已经为你反序列化了,所以你不需要做任何进一步的事情

【讨论】:

    猜你喜欢
    • 2014-02-01
    • 2013-02-23
    • 1970-01-01
    • 2018-01-16
    • 2015-06-13
    • 2020-12-29
    • 1970-01-01
    • 1970-01-01
    • 2020-11-21
    相关资源
    最近更新 更多