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