更新
所以 JQuery.post() 函数接收到有效的 JSON。我知道函数调用中的属性“json”应该已经足以获取原始数组,并且不需要 .parseJSON()。我想这就是为什么我在使用这个函数时得到语法错误的原因。
但不知何故,如果没有 .parseJSON() ,我仍然无法访问数组。事实上,当我使用 typeof(data) 时,它仍然是一个字符串。我可以将它写入控制台,它仍然是有效的 JSON。
如何使用我的数组(最初通过 json_encode() 编码一次的关联 PHP 数组)作为 JavaScript 中的普通关联数组?
原帖
我已经收到这个语法错误好几天了,这让我发疯了。我读了很多帖子,我知道这一定是我想念的超级简单的事情。请帮忙。提前致谢。
var institute = $.post("../libraries/load_content.php",
{
funct: "getInstituteAddress",
ins_name: "Institut für Informatik",
ins_city: "Kiel"
}, "json");
institute.done(function(data) {
alert(data);
var ins_data = $.parseJSON(data); // <-- throws syntax error
$("#street").empty().val(ins_data['ins_street']);
$("#number").empty().val(ins_data['ins_number']);
$("#postalcode").empty().val(ins_data['ins_postal_code']);
}, "json");
institute.fail(function(data) {
console.log("Retrieving institute data failed. Returned:"+data);
});
JQuery.post() 函数调用一个 php 脚本,该脚本从 DB 中获取所需的数据并返回一个带有 json_encode() 的关联数组。
到目前为止,这工作正常。
{"ins_name": "Institut für Informatik",
"ins_street": "HRSl",
"ins_number": "42",
"ins_postal_code": "24118",
"ins_city": "Kiel"}
上面我提醒返回的字符串和JSONLint 验证器告诉我它是有效的 JSON。
所以我将字符串直接复制到 parseJSON() 调用中。工作得很好。为什么不使用变量?
这是我尝试过的:
- 我经常读到关于缺少单引号/双引号的信息。这里没有运气。在字符串周围添加了多个变体。
- 我还经常读到在这种环境中不需要 parseJSON 函数。所以我放弃了函数调用。语法错误当然消失了,但是我无法将 JSON 读取为普通数组,因此字段被清空。
- 我尝试用 .ajax() 替换 .post() 函数,添加缺少的参数……效果相同。
- 我将 dataType 属性更改为 html 或 text。再次没有运气。