Javascript 如何检索jquery$.ajax对象的responseJSON属性
我有一个javascript: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);
$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是唯一提供完整工作示例答案的人。我认为有时清楚地看到同步示例如何工作也是有价值的。我只是读到一些评论说同步是一种不好的做法,但没有人解释为什么,如果选项存在是因为存在需要同步的情况