我希望下面的check_membership()函数返回AJAX“数据”。 但是,“result”一直设置为XHR对象,而不是返回的JSON对象。
我该如何解决这个问题?
function check_membership() {
var result;
result = jQuery.ajax({
type: 'POST',
url: '/ajax/member',
dataType: 'json',
async: false,
success: function(data) {
return data;
}
});
return result;
}
感谢。
答案 0 :(得分:2)
在从main函数返回之前,Javascript不会'等待'$ .ajax的成功回调,因此很有可能不会返回任何内容。您必须将async
选项设置为false
(这将在请求期间阻止浏览器)或修改您的策略,例如,使用同步Jax调用。通过做你想要最终完成 成功回调的内容。例如:
function update_membership_status() {
jQuery.ajax({
type: 'POST',
url: '/ajax/member',
dataType: 'json',
success: function(json) {
$("#status").text('Signed In:' + json.SignedIn + " msg" + json.msg);
}
});
}
答案 1 :(得分:1)
var result =
{
ajax: function(){
jQuery.ajax({
type: 'POST',
url: '/ajax/member',
dataType: 'json',
async: false,
success: function(data) {
return data.signedIn;
}
});
}
}
然后调用result.ajax();无论如何
答案 2 :(得分:0)
您可以使用 async 属性同步返回数据:
function check_membership() {
var result = jQuery.ajax({
type: 'POST',
url: '/ajax/member',
dataType: 'json',
async: false
});
return result.SignedIn;
}