JSON.parse:从PHP json_encode接收assoc数组时的意外字符

时间:2013-08-23 16:34:11

标签: php jquery ajax json post

更新

因此JQuery.post()函数接收有效的JSON。我知道函数调用中的属性“json”应该已经足以获得原始数组,并且没有必要使用.parseJSON()。我猜这就是为什么我在使用这个函数时会出现语法错误。

但不知何故我仍然无法在没有.parseJSON()的情况下访问数组。事实上,当我使用typeof(数据)时,它仍然是一个字符串。我可以将它写入控制台,它仍然是有效的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 validator告诉我它是有效的JSON。

所以我将String直接复制到parseJSON()调用中。工作得很好。为什么不用变量?

这是我试过的:

  • 我经常阅读有关缺少单/双引号的内容。这里没有运气。在字符串中添加了多种变体。
  • 我还经常读到在这样的环境中不需要parseJSON函数。所以我放弃了函数调用。语法错误当然会消失,但我无法将JSON读作普通数组,因此字段只是清空。
  • 我尝试用.ajax()替换.post()函数,添加缺少的参数......具有相同的效果。
  • 我将dataType属性更改为html或text。再没有运气。

0 个答案:

没有答案