【问题标题】:Malformed JSON response格式错误的 JSON 响应
【发布时间】:2016-05-20 07:02:01
【问题描述】:

我收到来自 AJAX $.getJSON() 请求的格式错误 JSON 响应。我不明白这个问题。

这里是请求代码:

var myfunc = function(){
    $.getJSON( "/", {"data": ""}, function( data, status ){
        var values = data;

        $("#temperature").html( values.temperature.toFixed(1).toString() );
        $("#humidity").html( values.humidity.toFixed(0).toString() );
    });
});

这是收到的 JSON 数据(通过 Firefox 调试器提取):

{
    "temperature": 17.799999237060547,
    "humidity": 35.900001525878906,
    "failed": false
}

我在这里看不到什么是格式错误。并且代码有效。 DOM 元素 id="temperature"id="humidity" 已正确更新。

我使用$.get()JSON.parse() 得到了完全相同的结果。

有人知道如何解决这个问题吗?

【问题讨论】:

  • malformed JSON 是什么?一切看起来都不错,并且按预期执行,那么有什么问题呢?
  • JSON 对我来说似乎没问题。究竟是什么问题?
  • 如果温度和湿度更新正确,那么问题出在哪里?你从哪里得到“格式错误的 JSON”?
  • 实际上唯一的问题是 Firefox 调试器告诉我 JSON 格式错误。这就是我写“我不明白”的原因;-)

标签: javascript jquery json getjson


【解决方案1】:

我的猜测是您通过网络接收的 json 数据格式不正确,但是无论如何它都已成功转换为对象。

getJSON 自动对接收到的数据应用 JSON.parse(..)。

尝试使用 Google Chrome 上的“网络”侦听器选项卡,在解析之前准确查看您收到的响应。可能缺少 " 或类似的东西。

如果您可以访问服务器代码,也可以尝试在其中记录响应。

编辑: you might be interested by this link 可能与某些服务器配置有关。
还提到了 Mimetype in this link

【讨论】:

  • 使用 Firefox 网络监听器,我得到正确的 JSON 值。
  • 我写了服务器代码。我发送的答案是 "{\"temperature\": 10.0, \"humidity\": 20.0, \"failed\": false}", \" being literal " in C++...
  • 您的第二个链接允许我修复错误。谢谢!
猜你喜欢
  • 2015-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-04
相关资源
最近更新 更多