Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在文件存在之前,从jquery获取ajax_Jquery_Ajax_Post_Get_Listener - Fatal编程技术网

在文件存在之前,从jquery获取ajax

在文件存在之前,从jquery获取ajax,jquery,ajax,post,get,listener,Jquery,Ajax,Post,Get,Listener,我想从jQuery对服务器上的文件进行AJAX调用 问题是,此文件是在我从另一台pc/浏览器发布帖子时生成的 我想要的是请求仍在侦听,直到生成文件,并且不返回404响应 有什么想法吗?我认为你不能完全按照你的要求去做。最好的办法可能是将Ajax调用放入while循环中,只轮询服务器,直到它返回文件。您可以使用setTimeout反复检查响应是否为200。您可以调整超时值以平衡服务器上的负载和UI体验。此外,如果所有操作都失败,计数器可能会限制总尝试次数。编写服务器端脚本,等待文件存在,然后返回其

我想从jQuery对服务器上的文件进行AJAX调用

问题是,此文件是在我从另一台pc/浏览器发布帖子时生成的

我想要的是请求仍在侦听,直到生成文件,并且不返回404响应


有什么想法吗?

我认为你不能完全按照你的要求去做。最好的办法可能是将Ajax调用放入
while
循环中,只轮询服务器,直到它返回文件。

您可以使用
setTimeout
反复检查响应是否为200。您可以调整超时值以平衡服务器上的负载和UI体验。此外,如果所有操作都失败,计数器可能会限制总尝试次数。

编写服务器端脚本,等待文件存在,然后返回其内容。(或重定向到文件)

A
while
循环没有帮助。您需要使用回调。虽然它可以工作,但我不想发出成千上万的请求:/i我认为解决方案可能是服务器中的套接字。。。但是如何在ruby中制作套接字,我在google中找不到任何东西:/@Pablo:Huh?你在说什么?我找不到一个“好”的方法来等待文件存在,我想的是从服务器到客户端的通知…我的意思是,我认为最好的方法,是服务器告诉客户端何时找到文件,到一个开放的通道。。。它不是一个套接字??你不能在客户端上这样做(HTML5WebSocket除外)。您可以只使用一个长时间运行的请求。但服务器将接收许多不必要的请求:/n不一定;例如,如果一个文件平均在0.85秒内就可以下载,那么您可以让javascript在一秒钟后获取该文件,在大多数情况下,这将导致状态为“OK”,200。如果出现问题,您可以将超时时间增加两倍:js将在1s、2s、4s、8s等之后请求文件,直到达到最大值。这样的话,你最多只能请求每个文件5次,如果我们说最大值是30s.mmm。。。是的,但我的意思是我可能需要3个小时。。。我想打开一个端口,让服务器在找到文件时向客户端发送通知,然后发出一个正确的请求。。。但我不知道如何在Ruby on Rails上实现:/