jquery json问题

时间:2010-06-30 18:40:47

标签: jquery ajax json

请看这个功能

$(".menu_tree img.edit").click(function()
    {
        id = this.id;
        lang = '<?=$lang_id?>';
        var body_width = $("body").width();
        var body_height = $("body").height();
        $("#shadow").width(body_width);
        $("#shadow").height(body_height);
        $("#shadow").show();

        var width = $("#edit_title").width();
        var height = $("#edit_title").height();
        $("#edit_title").height(0);
        $("#edit_title").width(0);
        $("#edit_title").animate(
        {
            width: width,
            height: height
        },600);
        $.post
        (
            "get_title.php",
            {id: id, lang: lang},
            function(data)
            {
                alert("qqq");
            },
            "json"
        );
    });
get_title.php中的

我生成json对象,类似于{name:"name",val:"value"} 如果我没有写"json",它会正常工作,但"json"它甚至不会提醒qqq :(

有什么想法吗?

由于

2 个答案:

答案 0 :(得分:3)

{name: "name", val: "value" }无效JSON。键也必须是字符串。

{"name": "name", "val": "value"}

答案 1 :(得分:3)

1.4.2解析器比早期版本更严格。正如michal所述,json无效,因为属性名称不是双引号。最近我在将网站升级到jQuery 1.4.2时遇到了这个问题。

我强烈建议允许PHP为您处理json编码。我怀疑你的问题是我在PHP中手动组合json字符串,jQuery拒绝它,因为有些是单引号。

所以,对于PHP而不是像

这样的东西
echo "{name:'$val',val:'$val'}";
exit;

让PHP进行编码:

header('Content-type: application/json');
echo json_encode(array('name'=>$val,'val'=>$val));
exit;

另外,如果您还没有为JSON添加Content-Type标头也不会受到伤害。