我从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()
回调。
我抓住了textStatus
,errorThrown
和jqXHR.responseText
,其中包括:
textStatus
:parsererror
errorThrown
:SyntaxError: 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');