访问JSON Ajax响应数据

时间:2017-04-05 10:56:51

标签: javascript php ajax laravel

我已经为JSON数据添加了一个属性,但是我无法访问它没有显示的JS数据。我不是Ajax和JSON的新手,但很明显,在Ajax方面,我的知识仍然存在差距。请帮助我理解如何将数据附加到我的Ajax响应中。

我在PHP控制器类中有这个:

$x = '5';

if($request->ajax()){
    return response()->json([
        'total_questions' => $x,
        'responseText' => $e->getMessage(), 
    ], 500);
}

我想用JS / JQuery访问total_questions属性..

我的JS AJAX回调在这里:  console.log('errors - >',data.total_questions); - 返回undefined

$.ajax({

    type:"POST",
    url: APP_URL+"selfEvaluation/save",
    data:$(this).serialize(),
    dataType: 'json',
    success: function(data){
        console.log(data);
    },
    error: function(data){
        var errors = data.responseJSON;
        console.log('data -> ', data);
        console.log('errors -> ', data.total_questions);

        if(data.status == 422){
            // alert('422');
        }
    }
});

这是我的控制台结果 enter image description here

2 个答案:

答案 0 :(得分:0)

error: function(data){

是一种不正确的方法签名。请参阅http://api.jquery.com/jquery.ajax/的定义。 它应该是

error: function(jqXHR, errorThrown, textStatus){

您需要访问jqXHR.responseJSON媒体资源。所以:

console.log('errors -> ', jqXHR.responseJSON.total_questions);

但我会质疑为什么你要回归" 500"此请求的状态代码,当它看起来是有效的响应时。 " 500"意味着"内部服务器错误",这意味着服务器崩溃,当它看起来没有。如果你返回" 200" (" OK")状态,你的ajax代码将进入"成功"回调你可以直接引用"数据"回调中的对象来读取您的数据。

答案 1 :(得分:-2)

如果您从浏览器获得json响应,请尝试此操作。

$xmlData = new SimpleXMLElement($xmlString);
$results = [];
$ii = 0;
foreach($xmlData->categories->category as $category){
$results[$ii]['id']       = isset($category->id) ? (string)$category->id : false;
$results[$ii]['parentId'] = isset($category->parent) ? (string)$category->parent : false;
$results[$ii]['name']     = isset($category->description) ? (string)$category->description : false;
$ii++;
}

echo '<pre>'.print_r($results,true).'</pre>';