【问题标题】:Invalid JSON primitive ERROR无效的 JSON 原语 ERROR
【发布时间】:2013-07-26 05:54:47
【问题描述】:

请帮忙。在我的 ajax 调用中出现 Invalid JSON 原语错误,下面的 ajax 调用有什么问题

    $.ajax({
                url: "/Precedent/ShowPartyContents", type: "POST",
                contentType: 'application/json; charset=utf-8',
                dataType: 'html',
                data:{'partyId':party,'PartySelCombo':valueFrom,'DocumentId':DocId},
                sucess:function(result){
                    alert("String"+ result);
                    //jq("#PartyTagContentArea-"+ pass cheyyenda id).html(data).fadeIn();
                },
                error : function( ts ){ 
                    alert("error :(" + ts.responseText);


                }

            });

谢谢

【问题讨论】:

  • 你在哪一行得到这个错误?
  • 您也有错字。 success,不是sucess
  • 我从 ajax 错误函数中得到了这个错误,也感谢你指出这个拼写错误。
  • @Saeed 是我的数据:{'partyId':party,'PartySelCombo':valueFrom,'DocumentId':DocId} 行正确吗?这是传递这些参数的正确方法吗?
  • @saeed JSON.Stringfy 解决了我的问题,感谢您的时间...

标签: jquery ajax


【解决方案1】:

您承诺application/json 的内容类型,但正在发送一个普通的 JS 对象,它被 jQuery 序列化为百分位编码字符串。这种序列化可能与有效的 JSON 相差甚远。

变化:

data: {'partyId':party,'PartySelCombo':valueFrom,'DocumentId':DocId},

到:

data: JSON.stringify({'partyId':party,'PartySelCombo':valueFrom,'DocumentId':DocId}),

【讨论】:

  • 这提醒我,对于 JSon 响应,它应该是 application/json 的内容类型,但对于最初通过 JavaScript 提交,它需要是 'application/x-www-form-urlencoded;charset=UTF- 8'
  • 知道我们怎么会得到这个错误,只来自一个 iPhone 客户端?我正在处理的东西有多个安装,对于成千上万的用户来说工作正常,除了一些人使用最新的 iPhone 客户端“无效的 JSON 原语:POST”
【解决方案2】:

尝试,从数据中删除“'”,

data:{partyId:party,PartySelCombo:valueFrom,DocumentId:DocId}

使用单引号来分配您的值,例如

错误:

$.ajax({
  type: 'POST',
  contentType: 'application/json',
  dataType: 'json',
  url: 'WebService.asmx/Hello',
  data: { FirstName: "Dave", LastName: "Ward" }
});

对:

$.ajax({
  type: 'POST',
  contentType: 'application/json',
  dataType: 'json',
  url: 'WebService.asmx/Hello',
  data: '{ FirstName: "Dave", LastName: "Ward" }'
});

请点击以下链接进行澄清

Invalid Json Premitive Possible Reason

【讨论】:

    【解决方案3】:

    由于这些行,您遇到了问题:

    contentType: 'application/json; charset=utf-8',
    dataType: 'html',
    

    首先你对应用程序说返回结果将是 JSON 类型,然后在第二行你说 dataType 将是 HTML。那么怎么返回json数据呢。

    要返回和使用 json 数据,您必须指定 dataType:'json'。 使用这个:

    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    

    注意:你把成功函数拼错了,所以也正确。

    【讨论】:

    • contentType 仅适用于 jQuery sends 数据。 dataType 仅适用于 jQuery receives 数据。需要删除contentType: 'application/json; charset=utf-8' 是正确的(因为其他设置为默认值,jQuery 将对不是 json 的数据进行格式编码),但dataType 需要保留'html' 如果是那种来自服务器的预期响应。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    • 1970-01-01
    • 2019-08-24
    • 1970-01-01
    • 2020-07-31
    • 2014-04-17
    相关资源
    最近更新 更多