【问题标题】:Variable doesn't get returned from AJAX function变量不会从 AJAX 函数返回
【发布时间】:2012-09-10 14:44:40
【问题描述】:

随着我的框架的增长,我决定将其拆分为文件,而不是将其留在主设计文件中。但是,这样做,函数的返回不会返回任何值。

数据不为空 - 如果我提醒 js 文件中的值,它们就在那里!

功能:

.js 文件中的第一个函数(在执行之前包含)

             var lock_get = 0;
             function get_data(data, destination) 
             {

                if (lock_get == 0)
                {
                    lock_get = 1;
                    $.ajax({
                        type: "POST",
                        url: destination,
                        async: true,
                        data: data,
                        success: function(data) 
                        {
                            lock_get = 0;
                            if (data)
                            {
                                return data;
                            }
                        }
                    });
                }
             };

所以这里是执行部分:

    var test = get_data(data, destination);
    notice(test);

测试是空的...我已经尝试了不同的写作方式,但我想我误解了 js 的可能性?

【问题讨论】:

标签: javascript jquery ajax


【解决方案1】:

你不能这样做:因为调用是异步的,所以 get_data 函数不能返回 ajax 调用的结果。

你应该做的是为get_data函数提供一个回调并在回调中处理结果。

function get_data(data, destination, callback) 
         {

            if (lock_get == 0)
            {
                lock_get = 1;
                $.ajax({
                    type: "POST",
                    url: destination,
                    async: true,
                    data: data,
                    success: function(data) 
                    {
                        lock_get = 0;
                        if (data && callback)
                        {
                            callback(data);
                        }
                    }
                });
            }
         };

然后这样称呼它:

get_data(data, destination, function(test){
   notice(test);
});

【讨论】:

  • 非常感谢没有考虑回调!当然它现在可以工作了:)...
【解决方案2】:

您也可以从同步 AJAX 调用中返回,使用同步调用通常是个坏主意,但有时它可能有用:

http://pratyush-chandra.blogspot.com/2012/04/store-ajax-json-response-into.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 2017-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多