Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery $.ajax上的$.parseJSON-解析响应时出现问题_Jquery_Json_Parsing - Fatal编程技术网

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

Jquery $.ajax上的$.parseJSON-解析响应时出现问题,jquery,json,parsing,Jquery,Json,Parsing,我不知道为什么,但是我在使用$时遇到了一个问题。在进行ajax调用时,我需要检查响应是否包含JSON,然后继续使用$对其进行解析。如果它不包含任何JSON,那么它将在元素中打印响应(响应将包含一些HTML) 然后我测试了eval是否可以做任何事情,当然可以,但我不想为此使用eval 我得到的代码是: $.ajax({ url: 'ajax.php', success: function(response) { var msg = $.parseJSON(

我不知道为什么,但是我在使用
$时遇到了一个问题。在进行ajax调用时,我需要检查响应是否包含JSON,然后继续使用
$对其进行解析。如果它不包含任何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');
        }
    }
});

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

而不是:

alert( msg.error );
做:


如果可能,请使用$.post。它将内容类型设置为HTML automagicly。

我以前遇到过一些类似的奇怪问题,在那种情况下,msg=jQuery.parseJSON(response);您确定ajax.php与发出请求的URL位于同一目录中吗?请发布您试图解析的JSON。当您尝试
警报(msg)
时,您会得到什么?
typeof
为许多不同的类型提供了
“object”
。啊,是的,现在我注意到就在你的答案发布之后,
[{}]
-数组对象,
{}
-对象。jQuery API文档应该已经包含在文档中了!:PI试图在javascript中解析
{“result”:“success”,“msg”:“success”}
,但当我打印
数据时,我得到的值是
未定义的???
alert( msg.error );
alert( msg[0].error );