1

更新

所以 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。再次没有运气。
4

0 回答 0