有没有办法返回AJAX调用获得的成功数据?
我正在尝试执行以下操作:
function myFunction(title) {
var csrftoken = getCookie('csrftoken');
$.ajax({
url: 'call_details_cache/',
type: 'post',
data: {
phone: title,
type_member: "cust",
csrfmiddlewaretoken: csrftoken
},
success: function (data) {
},
failure: function (data) {
alert('Got an error dude');
}
});
}
然后:
console.log(myFunction(title))
undefined
打印在我的控制台中。我该如何解决?
提前致谢!
答案 0 :(得分:1)
Ajax是异步的,您尝试访问值,就像它是同步一样。 你需要一个回调或延期......
回调示例:
function myFunction(title) {
var csrftoken = getCookie('csrftoken');
$.ajax({
url: 'call_details_cache/',
type: 'post',
data: {phone:title, type_member: "cust", csrfmiddlewaretoken: csrftoken},
success: myFunctionCallback,
failure: function(data) {
alert('Got an error dude');
}
});
}
function myFunctionCallback(data) {
console.log(data);
}
编辑: 这个主题已经回答了很多细节。见How do I return the response from an asynchronous call?
答案 1 :(得分:0)
您可以使用promise作为以下内容来实现此目的:
function myFunction(title) {
var csrftoken = getCookie('csrftoken');
return $.ajax({
url: 'call_details_cache/',
type: 'post',
data: {
phone: title,
type_member: "cust",
csrfmiddlewaretoken: csrftoken
}
});
}
然后您可以将其用作:
var promise = myFunction(title);
promise.then(function (data) {
console.log(data);
},
function(reason) {
alert('You got error dude');
});