Ajax call not returning correct variable
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
jQuery: Return data after ajax call success
我有一个问题,让这个ajax功能工作,不知道我搞砸了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | var getTotalEntries = function(query) { var total; $.ajax({ url: url, data: query, dataType: 'jsonp', success: function(data) { console.log(data.total); total = data.total; } }); return total; }; |
这会将65记录到控制台,但返回undefined ...不确定发生了什么。
ajax调用和return语句是异步的,而不是同步的,所以你的return语句在ajax调用返回之前触发并设置变量。
处理此问题的一种方法是使用成功回调内的数据执行您要执行的任何操作。
1 2 3 4 5 6 7 8 9 10 11 12 | $.ajax({ url: url, data: query, dataType: 'jsonp', success: function(data) { console.log(data.total); total = data.total; // do stuff with total here, or invoke function that uses total doSomething(total); } }); |
Ajax是异步的。 因此,执行继续而不等待返回值。 你可以这样做:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | var getTotalEntries = function(query) { var total; $.ajax({ url: url, data: query, dataType: 'jsonp', success: function(data) { console.log(data.total); total = data.total; //pass the total value here processReturn(total); }, //you may want to add a error block error: function(e, xhr, settings, exception){ } }); return total; }; |
编码处理方法以处理总数:
1 2 3 4 | var processReturn = function(total) { //use the total value here console.log(total); }; |
那应该照顾它。