jQuery将ajax结果返回到外部变量中

我在使用ajax时遇到了一些问题。

如何将ajax的所有结果分配到外部变量?

我谷歌了,发现这个代码..

var return_first = (function () { var tmp = null; $.ajax({ 'async': false, 'type': "POST", 'global': false, 'dataType': 'html', 'url': "ajax.php?first", 'data': { 'request': "", 'target': arrange_url, 'method': method_target }, 'success': function (data) { tmp = data; } }); return tmp; }); 

但不适合我..

任何人都可以告诉该代码有什么问题吗?

你错过了一个逗号

 'data': { 'request': "", 'target': 'arrange_url', 'method': 'method_target' } 

此外,如果您希望return_first保存匿名函数的结果,则需要进行函数调用:

 var return_first = function () { var tmp = null; $.ajax({ 'async': false, 'type': "POST", 'global': false, 'dataType': 'html', 'url': "ajax.php?first", 'data': { 'request': "", 'target': 'arrange_url', 'method': 'method_target' }, 'success': function (data) { tmp = data; } }); return tmp; }(); 

注意()结尾。

这就是你需要做的:

 var myVariable; $.ajax({ 'async': false, 'type': "POST", 'global': false, 'dataType': 'html', 'url': "ajax.php?first", 'data': { 'request': "", 'target': 'arrange_url', 'method': 'method_target' }, 'success': function (data) { myVariable = data; } }); 

注意:已经折旧使用“async”。 请参阅https://xhr.spec.whatwg.org/ 。

使用‘async’:false来防止异步代码是一种不好的做法,

主线程上的同步XMLHttpRequest由于其对最终用户体验的不利影响而被弃用。 https://xhr.spec.whatwg.org/

在表面上设置async to false修复了很多问题,因为正如其他答案所示,您将数据转换为变量。 但是,在等待post数据返回时(由于数据库调用,连接速度慢等等,在某些情况下可能需要几秒钟),其余的Javascriptfunction(如触发事件,Javascript处理按钮,JQuery转换(如当响应处于挂起状态时,手风琴或自动完成(JQuery UI)将无法发生(如果由于您的站点现在基本上已冻结,响应永远不会发生,这真的很糟糕)。

试试这个,

 var return_first; function callback(response) { return_first = response; //use return_first variable here } $.ajax({ 'type': "POST", 'global': false, 'dataType': 'html', 'url': "ajax.php?first", 'data': { 'request': "", 'target': arrange_url, 'method': method_target }, 'success': function(data){ callback(data); }, });