我通过 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()
函数时,它工作正常。
我也已经尝试过这些:
- 使用枚举数组而不是关联数组。没运气。
- 在字符串的两侧添加单/双引号并再次解析。没运气。
- 使用
.ajax()
而不是.post()
. 没变。
我在这里想念什么?在我看来,JQuery.post()
函数的 dataType 声明应该足以解析 JSON 字符串。