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

数据不为空-如果我警告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的可能性吗?

评论

@Tuscan编号async:false已被弃用,始终是个坏主意

如何从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);
});


评论


严重感谢您没有考虑回调!当然它现在可以工作了:)...

–伊万·史瑞克利希(Ivan Schrecklich)
2012年9月18日上午10:48

#2 楼

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

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