variables不会从AJAX函数返回

随着我的框架的增长,我决定把它分成文件,而不是把它留在主要的devise文件中。 但是通过这样做,函数的返回不会返回任何值。

数据不是空的 – 如果我提醒他们在那里的js文件中的值!

function:

第一个.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); 

和testing是空的…我已经尝试了不同的写作方式,但我想我错过了js的可能性?

你不能这样做:由于调用是asynchronous的,get_data函数不能返回ajax调用的结果。

你应该做的是提供一个callback到get_data函数并处理callback中的结果。

 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); }); 

或者,您可以从同步AJAX调用返回,通常是使用同步调用的BAD想法,但有时可能会有用:

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