$ .ajax上的$ .parseJSON - 解析响应时出现问题

时间:2011-02-27 01:31:05

标签: jquery json parsing

我不知道为什么,但在进行ajax调用时我遇到$.parseJSON时遇到问题,我需要检查响应是否包含JSON然后继续解析它$.parseJSON,如果它不包含任何JSON,那么它将在元素中打印出响应(响应将包含一些HTML)。

然后我测试了eval是否会做任何事情,当然这样做了,但我不想使用eval来做这件事。

我得到的代码:

$.ajax({ 
    url: 'ajax.php',
    success: function(response)
    {
        var msg = $.parseJSON(response);

            //alert(typeof(response)); <-- returns 'string'

            //alert(typeof(msg)); <-- returns 'object'

            //alert(msg.error); <-- this doesn't work at all.

            //eval(response) <-- returns [object Object]

        if(msg.error !== '')
        {
            ajaxWindow.html(msg.error);
        }
        else
        {
            ajaxWindow.html(response).hide().slideDown('slow');
        }
    }
});

那么为什么它无法解析JSON字符串呢? jQuery.parseJSON清楚地说:

  

采用格式正确的JSON 字符串并返回生成的JavaScript对象。

但是没有任何东西可以被解析,这是某种错误,还是一个错误?

编辑: JSON:

[{"error":"Error loading template"}]

2 个答案:

答案 0 :(得分:7)

你有一个数组,所以你需要通过第一个索引来访问它。

而不是:

alert( msg.error );

做的:

alert( msg[0].error );

答案 1 :(得分:1)

如果可能,请使用$ .post。它自动将Content-Type设置为HTML。