jQuery getJSON:有效的json被破坏了

时间:2017-03-10 09:14:32

标签: jquery json getjson

我从php文件中获取一个JSON字符串,该文件返回有效的JSON。实质上,返回的JSON如下所示。我删除了一些数据,但是我留下的数据似乎导致了这个问题:

{"result": [
  {
    "prop0": 0000000,
    "prop1": 0,
    "prop1Desc": "a valid string",
    "prop2": "00000000000",
    "prop3": "00000000",
    "prop4": "Kiliç",
    "prop5": "00000000",
    "prop6": "a valid string",
    "prop7": 0.0,
    "prop8": "a valid string",
    "prop9": "a valid string",
    "prop10": 0,
    "prop11": 0,
    "prop12": 0.0,
    "prop13": 0.0,
    "prop14": 0.0,
    "prop15": 0.0,
    "prop16": false,
    "prop17": 0.0,
    "prop18": 0
  }
]}

当我使用$.getJSON()时,不调用回调函数,而是调用.fail()回调。

我抓住了textStatuserrorThrownjqXHR.responseText,其中包括:

  • textStatusparsererror
  • errorThrownSyntaxError: Ongeldig teken(我猜这是错误的JS版本;来自JSON.parse()

此外,jqXHR.responseText

{"result": [
  {
    "prop0": 0000000,
    "prop1": 0,
    "prop1Desc": "a valid string",
    "prop2": "00000000000",
    "prop3": "00000000",
    "prop4": "Kili�
    "prop5": "00000000",
    "prop6": "a valid string",
    "prop7": 0.0,
    "prop8": "a valid string",
    "prop9": "a valid string",
    "prop10": 0,
    "prop11": 0,
    "prop12": 0.0,
    "prop13": 0.0,
    "prop14": 0.0,
    "prop15": 0.0,
    "prop16": false,
    "prop17": 0.0,
    "prop18": 0
  }
]}

所以我认为在这个过程的某个地方,jQuery不喜欢带有重音字符的JSON字符串。 ç中的Kiliç似乎会造成麻烦,似乎也会删除行尾的", ...对于发生了什么以及如何解决这个问题的想法?

更新

我已经查看了@LinkinTED的建议,因为JSON在检查网络时似乎是有效的。在检查PHP文件后,我意识到它解码 UTF-8编码的字符串..但是我不确定以下代码是否有效,因为在{j}上调用了utf8_decode解码后的字符串(最后是有效的json).. PHP文件包含以下代码来回显JSON结果:

echo utf8_decode(json_decode( $response->opcResponse)->Response->DataResponse[0]->Data);

删除函数utf8_decode似乎没有任何效果。此外,我更改了Content-type标头,该标头最初只声明Content-type: application/json。我添加了; charset=utf-8,但没有效果。

旧:

header('Content-type: application/json');   

新:

header('Content-type: application/json; charset=utf-8');    

0 个答案:

没有答案