我已经构建了一个PHP文件,它可以抓取一个网页(使用cURL)来获取一些数据,并以JSON格式输出到屏幕上。
目标网站涉及一些重定向,临时输出数据到我的PHP文件。一旦重定向成功完成,JSON就会如期而至。我遇到的问题是,当我尝试使用jQuery的$.ajax()方法访问JSON时,它有时会返回不正确的数据,因为它没有等待重定向完成。
我的问题是,是否可以告诉AJAX请求在返回数据之前等待一定时间,从而允许PHP脚本中的重定向成功执行?
请注意,没有更干净的解决方案用于页面抓取,重定向是必不可少的,必须输出到屏幕上才能完成.。
发布于 2012-03-01 14:09:59
设置中总是有timeout。
jQuery文档:
超时值 设置请求的超时(毫秒)。这将覆盖使用$.ajaxSetup()设置的任何全局超时。超时时间从发出$.ajax调用时开始;如果其他几个请求正在进行,并且浏览器没有可用的连接,则可以在发送请求之前将请求超时。在jQuery 1.4.x及更低版本中,如果请求超时,XMLHttpRequest对象将处于无效状态;访问任何对象成员都可能引发异常。仅在Firefox中,脚本和3.0+请求不能被超时取消;即使它在超时期间之后到达,脚本也会运行。
发布于 2012-03-01 14:09:53
您应该在jQuery中使用诺言()。
发布于 2012-03-01 14:10:54
您可以始终存储ajax调用的结果,然后等待重定向到finsih,即:
$.ajax({
success: function(e)
{
var wait = setTimeout(function(){ doSomethingWithData(e.data); }, 5000); //5 sec
}
})或者,您可以设置一个间隔来检查是否发生了某件事(重定向完成),每x个ms量。我猜你的重定向会让你知道他们完成了吗?
https://stackoverflow.com/questions/9517592
复制相似问题