我不知道为什么,但是在进行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:
[{"error":"Error loading template"}]

最佳答案

您有一个数组,因此需要通过第一个索引访问它。

代替:

alert( msg.error );

做:
alert( msg[0].error );

关于jquery - $ .ajax上的$ .parseJSON-解析响应时出现问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5130819/

10-13 08:33