javascript - 如何使函数返回通过 AJAX 检索的数据

标签 javascript php jquery ajax symfony

在我的 JavaScript 文件中,我使用上面的函数异步获取服务器计算的值:

function function2(userid)
    {
        $.ajax({
                        type: "POST",
                        url: "http://localhost/bghitn/web/app_dev.php/get_number_of_articles",
                        data:{id:userid},
                        cache: false,
                        success: function(data){

                          return data;      
                        }
                        });

    }

事实上,我调用 function2在一组函数内:

function1();
var userid=.....
var x= function2(userid);
function3(x);

问题: 如您所见,function3使用 function2 返回的数据。但似乎function3在 AJAX 调用成功完成之前开始执行。我尝试使用 when功能但徒劳。

$.when(function2(userid)).done(function(){
function3();
        });

如何让前面的AJAX请求成功执行后执行下一个javascript代码?非常感谢您的建议。

最佳答案

选项 1:您始终可以将 AJAX 调用设置为同步,但要做好在等待响应时整个页面卡住的准备。只需将参数 async: false 添加到您的参数集中即可。

选项 2:提供回调或将 future 的代码放入成功处理程序中

选项 3:您可以使用此处描述的 defer/promise http://blog.mediumequalsmessage.com/promise-deferred-objects-in-javascript-pt1-theory-and-semantics

关于javascript - 如何使函数返回通过 AJAX 检索的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21682015/

相关文章:

javascript - 复选框无法在 html 页面中显示

php - 对于包含的 HTML 代码片段文件,哪种命名约定是正确的?

javascript - 如何从一个 Ajax 函数获取变量以在另一个 Ajax 函数中工作

Javascript:图像转为 localStorage 的 base64

javascript - PHP字符串转json数组

javascript - 单击同一 div 内的按钮时关闭 div

javascript - 单击元素前闪烁

Javascript scraper 按类名查找元素属性

php - MySQL 在整数零问题上签署了 Order By

javascript - 布局、Phonegap 和 JSON