无法访问JSON响应中的数据

时间:2014-06-04 03:03:23

标签: javascript json

我正在尝试使用以下代码从服务器访问json响应。根据firebug,我的服务器正在输出看起来像有效的json响应,如下所示:

{"result":"error","message":"This group is not empty"}

我的JavaScript如下所示,但当我尝试警告()来自json响应的数据时,我什么都没得到

    $.ajax({
        type: 'post',
        url: data_ajax_url,
        dataType: 'json',
        data: 'data_mysql_record_id=' + data_mysql_record_id + '&data_mysql_table_name=' + data_mysql_table_name,

        //success, annimate and remove row
        success: function(data){

           alert(data.result);
            //get a json message from server if one exists
            $ajax_response = data.message;
            if ($ajax_response == '' || $ajax_response == 'undefined') {
                $ajax_response = 'Request has been completed';
            }
            //slide up table row
            parent.slideUp(300, function(){
                parent.remove();
            });

            //show noty notification 1 sec later
            setTimeout(function(){
                noty({
                    text: $ajax_response,
                    layout: 'bottomRight',
                    type: 'information',
                    timeout: 1300
                });
            }, 1000);
        },

        //error - alert
        error: function(data){

            alert(data.result); //my test

            //get a json message from server if one exists
            $ajax_response = data.message; //where 'message' is key in php jason output
            if ($ajax_response == '' || $ajax_response == 'undefined') {
                $ajax_response = 'Error!- This request could not be completed';
            }

            //fire up a noty message
            noty({
                text: ''+$ajax_response,
                layout: 'bottomRight',
                type: 'warning',
                timeout: 1300
            });

        }

UPDATE:

            //data = jQuery.parseJSON(data);
            console.log(data);

Console.log正在给我这个

readyState
    4

responseJSON
    Object { result="error", message="This group is not empty"}

responseText
    "{"result":"error","mess...is group is not empty"}"

status
    400

statusText
    "Bad Request"

data = jQuery.parseJSON(data);
            console.log(data);

发出此错误

            SyntaxError: JSON.parse: unexpected character   
            ...nction(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i)                {if("string"...

状态400和“错误请求”是我在我的php标头中显示的事情,表明后端有错误

3 个答案:

答案 0 :(得分:1)

$.ajax requesterror处理程序具有签名

  

Function( jqXHR jqXHR, String textStatus, String errorThrown )

     

[...] 接收三个参数:jqXHR(在jQuery 1.4.x,XMLHttpRequest中)对象,描述发生的错误类型的字符串和可选的异常对象(如果发生)。 < / p>

将您的功能更改为

error: function(jqXhr) {
    var data = jqXhr.responseJSON; // you saw this in your console.log
    if (data) {
        …
    } else {
        // there might be other errors, where you don't get the server message
    }
}

答案 1 :(得分:0)

问题在于解析javascript中的JSON数据:

在使用json数据之前

data=jQuery.parseJSON(data);
alert(data.result);

试试这个。

答案 2 :(得分:-1)

使用jQuery.parseJSON,我建议使用console.log而不是alert,如下所示:

$.ajax({
    type: 'post',
    url: data_ajax_url,
    dataType: 'json',
    data: 'data_mysql_record_id=' + data_mysql_record_id + '&data_mysql_table_name=' + data_mysql_table_name,

    //success, annimate and remove row
    success: function(data){

       data = jQuery.parseJSON(data);
       console.log(data.result);

        //get a json message from server if one exists

        $ajax_response = data.message;
        if ($ajax_response == '' || $ajax_response == 'undefined') {
            $ajax_response = 'Request has been completed';
        }

        //slide up table row
        parent.slideUp(300, function(){
            parent.remove();
        });

        //show noty notification 1 sec later
        setTimeout(function(){
            noty({
                text: $ajax_response,
                layout: 'bottomRight',
                type: 'information',
                timeout: 1300
            });
        }, 1000);
    },

    //error - alert
    error: function(data){

        data = jQuery.parseJSON(data);
        console.log(data); //my test

        //get a json message from server if one exists
        $ajax_response = data.message; //where 'message' is key in php jason output
        if ($ajax_response == '' || $ajax_response == 'undefined') {
            $ajax_response = 'Error!- This request could not be completed';
        }

        //fire up a noty message
        noty({
            text: ''+$ajax_response,
            layout: 'bottomRight',
            type: 'warning',
            timeout: 1300
        });

    }