通过JQuery.post()从JSON字符串获取关联数组

时间:2013-08-24 16:34:51

标签: jquery ajax json

我通过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()。没有变化。
  4. 我在这里缺少什么?在我看来,JQuery.post()函数的dataType声明应该足以解析JSON字符串。

1 个答案:

答案 0 :(得分:4)

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