【问题标题】:Get assoc array from JSON string via JQuery.post()通过 JQuery.post() 从 JSON 字符串中获取关联数组
【发布时间】:2013-08-24 16:34:51
【问题描述】:

我通过 Ajax 调用 PHP 脚本。 PHP 函数传输一个由json_encode() 编码的关联数组一次。

JavaScript 代码

var load_institute = $.post("../libraries/load_content.php", {
    funct: "getInstituteInformation",
    ins_name: "Institut für Informatik",
    ins_city: "Kiel"
}, "json");
load_institute.done(function(data) {
    console.log("Data: "+data);
    console.log("Type: "+typeof data);
    console.log("Faculty: "+data['ins_faculty']); // <-- this is how I need it.
}, "json");

函数调用返回一个有效的 JSON 字符串。

控制台输出

[18:15:27.953] "Data: {"ins_name":"Institut f\u00fcr Informatik","ins_faculty":"Technische Fakult\u00e4t","ins_street":"HRSl","ins_number":"42","ins_postal_code":"24118","ins_city":"Kiel"}"
[18:15:27.953] "Type: string"
[18:15:27.954] "Faculty: undefined"

为什么它仍然是一个字符串? “json”-dataType 属性不应该已经将其解析回正常吗?我用.parseJSON() 试过了。当然会发生语法错误。 但是当我将返回的 JSON 字符串直接插入.parseJSON() 函数时,它工作正常。

这些我也试过了:

  1. 使用枚举数组而不是关联数组。不走运。
  2. 在字符串的两侧添加单引号/双引号并再次对其进行解析。不走运。
  3. 使用.ajax() 代替.post()。没有变化。

我在这里缺少什么?在我看来,JQuery.post() 函数的 dataType 声明应该足以解析 JSON 字符串。

【问题讨论】:

    标签: jquery ajax json


    【解决方案1】:

    您是否在 PHP 脚本中发送了正确的标头?因为如果数据头响应是纯文本,JQuery 将不会解析 JSON。

    【讨论】:

    • 我对标头了解不多。我可以向你保证,我不会改变任何事情。控制台显示 Request-Header 和 Response-Header。在我看来,两者都很好。唯一可能奇怪的是 Response-Header 的 Content-Type 显示为“text/html”。手动将 PHP 脚本中的标头更改为“application/json”会导致 .post() 函数失败。
    • 非常感谢!问题解决了。我将标题声明为“application/json”,然后使用ob_clean();flush();。现在可以了!
    猜你喜欢
    • 2020-11-04
    • 1970-01-01
    • 2012-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-05
    相关资源
    最近更新 更多