javascript - jQuery $.ajax成功一定是回调函数?

标签 javascript jquery ajax

我为 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/

相关文章:

javascript - 从输入字段获取值并使用ajax传递到新页面而无需提交表单

javascript - 如何从javascript调用swift函数

javascript - 如何隐藏/显示作用于 keyup 过滤器输入的表 div

javascript - 如何找到加载缓慢的 SAPUI5 应用程序的加载瓶颈

javascript - 循环遍历选定的复选框 jQuery

javascript - ajax 不再工作后 jquery select2

javascript - 有很多页面的分页

javascript - 根据 id 修改下一个元素的文本

javascript - 是否有任何 javascript 函数,甚至在 jQuery 库中与 PHP print_r() 功能相同?

javascript - XMLHttpRequest 就绪状态停止于 1