无法使用jQuery.parseJSON解析JSON数据

时间:2016-01-17 18:22:15

标签: javascript php jquery json ajax

我正在尝试使用AJAX在服务器上执行操作

jQuery(document).on('click','a.edit', function (e) {
            var id=$(this).prop('id');
            var params="id="+id;
            $.ajax({
                    data:params,
                    method: 'post',
                    url:base_url+'ajax/GetCategoryDetails/',
                    beforeSend: function(){ 
                    //alert(1)
                    },
                    complete: function(){  },
                    success: function(resultSet)
                    {
                        console.log( typeof resultSet );
                        console.log( resultSet );
                        console.log(resultSet.responseJSON.SUCCESS);
                        var result = jQuery.parseJSON(resultSet.responseJSON )
                        //alert(resultSet.SUCCESS);
                        console.log(resultSet.responseJSON );

                        //alert(result);
                        //App.stopPageLoading();
                        if(resultSet.ERROR)
                        {
                            alert(2);
                        }
                        else if(resultSet.SUCCESS)
                        {

                            alert(resultSet.DATA.name);
                            //$('#category').html(x.name);


                        }
                    }
                });


    });

然后在执行操作后在服务器端我必须发回一些响应,为此我已经创建了一个名为resultset的数组,我发送回来像这样

public function GetCategoryDetails()
{
    if($_POST)
    {
        $this->load->model('category');
        $category=array('id'=>$this->input->post('id'));
        $cat=$this->category->getCategoryDetails($category);
        if($cat)
        {
            $resultSet['SUCCESS'] = 1;
            $resultSet['DATA'] = $cat;
        }
        else
        {
            $resultSet['ERROR'] = array('1');
            $resultSet['MESSAGE'] = array('Could not get Category Details. Try Later');
        }
        //var_dump( json_encode($resultSet));exit;
        echo json_encode($resultSet);
    }

}

它看起来像var dump中的以下内容:

string '{"SUCCESS":1,"DATA":{"id":"31","name":"asdasdasd"}}' (length=51)

现在删除vardump后,当它返回到ajax时,resultSet看起来如下所示

alert(resultSet);

resultSet data

使用jQuery.parseJSON(resultSet);后,它会在警报中返回[object Object] JSON没有被解析或者可能是什么问题?

2 个答案:

答案 0 :(得分:0)

如果您收到服务器的回复,请尝试console.log(resultSet.responseJSON.SUCCESS);,您将在该回复中获得responseJSON个密钥。

因此,如果您尝试访问resultSet.SUCCESS,您将获得undefined,因为SUCCESS不是resultSet的密钥,而是resultSet.responseJSON的密钥。

因此,您的数据位于resultSet.responseJSON.DATA

答案 1 :(得分:0)

success: function(resultSet)
                {
                    console.log( typeof resultSet );
                    console.log( resultSet );
                    console.log(resultSet.responseJSON.SUCCESS);
                    var result = jQuery.parseJSON(resultSet.responseJSON )
                    //alert(resultSet.SUCCESS);
                    console.log(resultSet.responseJSON );

                    //alert(result);
                    //App.stopPageLoading();
                    if(resultSet.ERROR)
                    {
                        alert(2);
                    }
                    else if(resultSet.SUCCESS)
                    {

                        alert(resultSet.DATA.name);
                        //$('#category').html(x.name);


                    }
                }

我犯的错误是我解析了对象$resultSet并将其存储在$result中,仍然使用resultSet.ERRORresultSet.DATA.nameresultSet.SUCCESS它应该像result.ERRORresult.DATA.nameresult.SUCCESS

一样访问