簡體   English   中英

無法使用jQuery.parseJSON解析JSON數據

[英]Cannot Parse JSON data With jQuery.parseJSON

我正在嘗試通過使用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數據

使用jQuery.parseJSON(resultSet); 它在警報中返回[object Object] JSON未被解析,或者可能是什么問題?

試試console.log(resultSet.responseJSON.SUCCESS); 如果您收到服務器的響應,則該響應中將包含responseJSON鍵。

因此,如果您嘗試訪問resultSet.SUCCESS你會得到undefined ,因為SUCCESS是不是一個關鍵resultSet但關鍵resultSet.responseJSON

因此,您的數據在resultSet.responseJSON.DATA之內。

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.name ,結果result.SUCCESS

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM