我有这个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访问它时,它返回undefined:
答案 0 :(得分:15)
当然,它是未定义的,因为当您在代码的最后几行运行console
时,响应尚未来自服务器。
$.ajax
会返回承诺,您可以使用该承诺附加done()
和fail()
回调,您可以在其中使用您看到的所有属性。实际上,您已经使用了回调error
和success
,您可以在此处运行依赖于响应中的数据的代码和其他函数。
答案 1 :(得分:5)
您可以使用此技巧获取响应:
jQuery.when(
jQuery.getJSON('DBConnect.php')
).done( function(json) {
console.log(json);
});
已经晚了,但希望能帮到别人。
答案 2 :(得分:0)
响应是"数据",成功...所以你可以在成功的内部访问写入数据[0],数据[1]。
例如:
success: function(data) {
alert(data[0]);
},
如果你想要这个响应,那么你可以在外面设置一个变量,并尝试这个:
success: function(data) {
myVar = data;
},
希望,这有帮助。
答案 3 :(得分:-2)
对于那些不同心的人,如果它是同步的,就像我一样,你可以这样做:
$('#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
函数内部处理。
编辑选项以符合您的情况。快乐的编码:)