【问题标题】:JSON variable returning correct but value is undefined?JSON变量返回正确但值未定义?
【发布时间】:2011-11-24 02:43:33
【问题描述】:

这是我通过 jquery 的 ajax 请求的成功函数,

success: function(response) {

    if (response.error == undefined) {

    alert(response);
    }
$('#' + id).after('<div id="emailMsg" class="error">' + response.error + '</div>');

}

因为该值以未定义的形式返回,所以它提醒我返回的 JSON 是...

{"error":true}

为什么会发生这种情况,当我调用 response.error 时,我肯定会得到 true 或 false。

更新

变量返回为字符串而不是布尔值,我的 json_encode();

    if (!$q -> rowCount()) {

    echo json_encode(array('error' => false));
}
else {

    echo json_encode(array('error' => true));
}

【问题讨论】:

    标签: json variables


    【解决方案1】:

    您可能想尝试将dataType: 'json' 参数添加到您的$.ajax 调用中。这将确保 jQuery 会为您处理使响应成为对象。

    【讨论】:

      【解决方案2】:

      您需要先将 JSON 从字符串解析为 JavaScript 对象。

      这可以通过JSON.parse(response) 完成。在没有原生 JSON 的旧浏览器中,eval(response) 也可以工作,但安全性较低。

      【讨论】:

      • 刚试了,在if语句前加,不行:/
      • 试试alert(typeof response);,看看它能给你什么。
      • 它返回字符串,我已经编辑了我的问题以向您展示我的 json_encode();
      • 好的,你在做response = JSON.parse(response);吗?
      • 感谢您的帮助 Tarek Fadel 的解决方案运行良好。
      猜你喜欢
      • 1970-01-01
      • 2020-11-29
      • 1970-01-01
      • 2020-12-27
      • 1970-01-01
      • 1970-01-01
      • 2020-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多