为了使我的jQuery代码模块化,即可重用,我在另一个函数中放置了一个ajax()函数fetch_ajax().我正在尝试fetch_ajax()使用来自其他地方的参数调用,这应该只是运行包含ajax()并返回响应.
但这并没有发生 - 相反,fetch_ajax()显然对调用者来说过快地返回错误,并且不会等到ajax()完成请求并得到响应.
这是代码:
该fetch_ajax()功能
function fetch_ajax(url) {
$.ajax({
type: 'GET',
url: url,
success: function(response) {
return response;
}
});
}
Run Code Online (Sandbox Code Playgroud)
调用功能:
function caller() {
response = fetch_ajax('script.php');
alert(response); //this is always 'undefined'
}
Run Code Online (Sandbox Code Playgroud)
在fetch_ajax(),我尝试不直接response从内部返回ajax(),但将其写入变量,并在之后返回该变量ajax()- 这也不起作用(相同的结果).
当我return response;在ajax()功能内部发出第二个警报时,我看到一个内部后面的一个火caller().所以我想不知怎的,fetch_ajax()在它返回false之前不等待包含的函数执行.
我究竟做错了什么?
谢谢.
你的思路是错误的 - .ajax()写入的函数不等待包含的函数.success是一个事件监听器,因此只要响应到达就会动态触发它.您可以使用同步请求或jQuery队列来解决此问题,但两者都有缺点.
请参阅如何让jQuery在返回之前等待Ajax调用完成?用于同步请求解决方案.它比另一个简单得多,但如果服务器正常死亡,或者过度活跃的防火墙阻止了答案,或者愤怒的lolcat在途中吃掉了你的请求,它会挂起你的浏览器.
| 归档时间: |
|
| 查看次数: |
3602 次 |
| 最近记录: |