首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery AJAX等待

jQuery AJAX等待
EN

Stack Overflow用户
提问于 2012-03-01 14:05:51
回答 4查看 532关注 0票数 0

我已经构建了一个PHP文件,它可以抓取一个网页(使用cURL)来获取一些数据,并以JSON格式输出到屏幕上。

目标网站涉及一些重定向,临时输出数据到我的PHP文件。一旦重定向成功完成,JSON就会如期而至。我遇到的问题是,当我尝试使用jQuery的$.ajax()方法访问JSON时,它有时会返回不正确的数据,因为它没有等待重定向完成。

我的问题是,是否可以告诉AJAX请求在返回数据之前等待一定时间,从而允许PHP脚本中的重定向成功执行?

请注意,没有更干净的解决方案用于页面抓取,重定向是必不可少的,必须输出到屏幕上才能完成.

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-03-01 14:09:59

设置中总是有timeout

jQuery文档:

超时值 设置请求的超时(毫秒)。这将覆盖使用$.ajaxSetup()设置的任何全局超时。超时时间从发出$.ajax调用时开始;如果其他几个请求正在进行,并且浏览器没有可用的连接,则可以在发送请求之前将请求超时。在jQuery 1.4.x及更低版本中,如果请求超时,XMLHttpRequest对象将处于无效状态;访问任何对象成员都可能引发异常。仅在Firefox中,脚本和3.0+请求不能被超时取消;即使它在超时期间之后到达,脚本也会运行。

票数 1
EN

Stack Overflow用户

发布于 2012-03-01 14:09:53

您应该在jQuery中使用诺言()。

票数 0
EN

Stack Overflow用户

发布于 2012-03-01 14:10:54

您可以始终存储ajax调用的结果,然后等待重定向到finsih,即:

代码语言:javascript
复制
$.ajax({
    success: function(e)
    {
         var wait = setTimeout(function(){ doSomethingWithData(e.data); }, 5000); //5 sec
    }

})

或者,您可以设置一个间隔来检查是否发生了某件事(重定向完成),每x个ms量。我猜你的重定向会让你知道他们完成了吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9517592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档