我为 jQuery 的 $.ajax() 方法创建了一个包装函数,这样我就可以传递不同的数据类型和发布变量 - 就像这样:
function doPost(dType, postData, uri){
$.ajax({
url: SITE_URL + uri,
dataType: dType,
data: postData,
success: function(data){
return data;
});
}
我遇到的问题是取回数据(始终是 JSON)。我尝试在 $.ajax() 函数调用之前设置 var ret
并在成功函数中将其设置为 ret = data
。我在这方面很愚蠢吗?如果我不设置成功函数,$.ajax 会直接返回数据吗?还是只是成功:返回数据
?还是 success
需要一个回调函数来处理数据,这可能只是 return data
?
最佳答案
好吧,你在一个函数中——利用变量作用域 ;-)
function doPost(dType, postData, uri) {
var result;
$.ajax({
url: SITE_URL + uri,
dataType: dType,
data: postData,
async: false,
success: function(data){
result = data;
});
return result;
}
这确实有效,但我想 async
部分是必须的......否则 $.ajax
的调用将立即返回,并且 result
仍然是未定义的——作为函数调用的结果,你总是会得到 undefined
。
但是,当您使 $.ajax
调用同步时,它会阻塞,直到接收到数据,并且您可以将数据作为您自己的函数的 result
返回。
但是你必须清楚,使用这个方法时,在ajax加载完成之前不会执行其他代码!
关于javascript - jQuery $.ajax成功一定是回调函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2531490/