我试图创建一个 ajax 函数来每次获取数据库的一些参数,但是当我调用 ajax 方法时它没有正确返回,当我调试时值是正确的,但返回结果不是有效。
$(document).ready(function () {
function foo(mod){
var uri="some url";
$.ajax({
type: "GET",
url: uri,
}).done(function( data ) {
return data;
});
}
// alert to get the result is always printing undefined
alert(foo("param_1"));
});
foo
无法返回 ajax 调用的结果,因为ajax 调用是异步。 foo
在调用完成之前返回。此外,done
处理程序中的 return
从 done
处理程序返回,而不是 foo
。
您需要让 foo
接受回调,然后调用它:
$(document).ready(function () {
function foo(mod, callback){
var uri="some url";
$.ajax({
type: "GET",
url: uri,
}).done(function( data ) {
callback(data);
});
}
// alert to get the result is always printing undefined
foo("param_1", function( data ) {
alert(data);
});
});
或者,如果您在将其提供给回调之前真的根本不对其进行任何处理,您可以提供callback
to done
直接:
$(document).ready(function () {
function foo(mod, callback){
var uri="some url";
$.ajax({
type: "GET",
url: uri,
}).done(callback);
}
// alert to get the result is always printing undefined
foo("param_1", function( data ) {
alert(data);
});
});