我已经多次尝试使用jQuery ajax调用,但在更新之前它会返回值。我已经google了它并尝试了许多解决方案,没有人为我工作,我总是得到未定义的值,因为函数返回值在ajax调用完成之前。任何帮助都会很感激,
这是我的代码
$(document).ready(function() {
console.log(secondvalidation());
});
function onemorevalid() {
console.log("working");
//this ajax call return 1
return jQuery.ajax({
url: 'handler/email.php',
method: 'POST',
});
}
function secondvalidation() {
onemorevalid1 = new onemorevalid();
onemorevalid1.done(function(data) {
console.log("data " + data);
return data;
});
}
控制台上的输出是
working
undefined
data 1
答案 0 :(得分:1)
你正在用一种方法制造一个物体。从根本上说这是错误的。此外,如果您需要将ajax调用的值传递给之后调用的代码,则可以向查询添加async:false
,以便代码等待ajax响应。
确保在文档就绪函数中调用ajax方法后调用other_function()
。
所以我认为你需要的是:
$(document).ready(function(){
var requested_data;
var request = $.ajax({
url:'handler/email.php',
method:'POST',
async:false,
dataType: 'text'
});
request.done(function(data) {
console.log("data " + data);
requested_data = data
});
function other_function(){
console.log("toing_toing: " + requested_data);
}
other_function();
});
这是此代码的working example fiddle。
请注意,还有其他方法可以实现per this answer。 async:false
可能导致您的脚本冻结,直到请求完成,因此如果请求花费很长时间会导致错误的UI体验。