Javascript 如何检索jquery$.ajax对象的responseJSON属性

Javascript 如何检索jquery$.ajax对象的responseJSON属性,javascript,jquery,ajax,json,Javascript,Jquery,Ajax,Json,我有一个javascript: $ajax = $.ajax({ type: 'GET', url: 'DBConnect.php', data: '', dataType: 'json', success: function(data) {}, error:function (xhr, ajaxOptions, thrownError) { dir(thrownError); dir(xhr);

我有一个javascript:

$ajax = $.ajax({
    type: 'GET',
    url: 'DBConnect.php',
    data: '',
    dataType: 'json', 
    success: function(data) {},
    error:function (xhr, ajaxOptions, thrownError) {
        dir(thrownError);
        dir(xhr);
        dir(ajaxOptions);
    }
});
console.dir($ajax);
console.dir($ajax.responseJSON);
console.dir($ajax)显示它有一个名为responseJSON的属性,但当我尝试使用$ajax.responseJSON访问它时,它返回未定义的: 响应,是成功的“数据”。。。因此,您可以访问success中的写入数据[0],数据[1]

例如:

success: function(data) {
 alert(data[0]);
},
如果您想要此响应,为了成功,您可以在外部设置一个变量,然后尝试以下操作:

success: function(data) {
 myVar = data;
},

希望,这有帮助。

当然,它还没有定义,因为当您在代码的最后几行运行
控制台时,服务器还没有响应


$.ajax
返回promise,您可以使用它附加
done()
fail()
回调,在这里您可以使用看到的所有属性。实际上,您已经使用了回调
error
success
,在这里您可以运行依赖于响应中数据的代码和其他函数。

您可以使用以下技巧获得响应:

jQuery.when(
    jQuery.getJSON('DBConnect.php')
).done( function(json) {
    console.log(json);
});

现在已经晚了,但希望能帮助其他人。

对于那些不介意同步的人,比如我,你可以这样做:

$('#submit').click(function (event) {
    event.preventDefault();

    var data = $.ajax({
        type: 'POST',
        url: '/form',
        async: false,
        dataType: "json",
        data: $(form).serialize(),
        success: function (data) {
            return data;
        },
        error: function (xhr, type, exception) {
            // Do your thing
        }
    });

    if(data.status === 200)
    {
        $('#container').html(data.responseJSON.the_key_you_want);
    }
});
它运行这些动作,等待来自Ajax调用的响应,然后在状态==200时进行处理,如果有什么触发了错误,则在
error
函数中进行处理


编辑选项以匹配您的情况。快乐编码:)

除了提供给
success
处理程序(反正是响应)的内容之外,您需要它的具体原因是什么?在ajax调用(异步)完成之前,这将是未定义的/空的。此时,您可以通过success方法访问它。如何从success回调中获取响应数据?@user1028270:您不能。AJAX是异步的。您只能从回调中访问数据。您可以使用
.done()
添加另一个回调,以便访问JSON
$ajax.done(函数(数据){console.log(数据);})
。请查看我的答案-如果您将
async
设置为false并从那里开始,您可以查看答案;-)是的,但是我如何从成功回调中获得它呢?我想处理脚本中另一个位置的数据。您好,在ajax函数之外设置一个变量,在成功中,将数据的值指定给这个变量,这样您就可以在另一个位置使用该数据。同步解决方案几乎总是错误的。是的,在这里,在大多数用例中使用同步解决方案是不好的做法。但是+1是唯一提供完整工作示例答案的人。我认为有时清楚地看到同步示例如何工作也是有价值的。我只是读到一些评论说同步是一种不好的做法,但没有人解释为什么,如果选项存在是因为存在需要同步的情况