在一个脚本中有两个$ .ajax()调用

我想显示服务器端程序的一些进度信息(实际上是ffmpeg重新编码)。 我最好的方法是使用两个不同的$ .ajax()调用myscript,如下所示:

1)当提交表单(将触发重新编码)时,一个$ .ajax()将开始重新编码,如下所示:

$.ajax({ type: "GET", url: "runffmpeg.php", data: dataString, success: function(data, textStatus, XMLHttpRequest) { //clearInterval(repeat); location.reload(); }}); 

2)然后,第二个$ .ajax()调用将开始观察结果文件的大小,以便通知访问者进度,如下所示:

  $.ajax({ type: "GET", url: "checkprogress.php", data: dataString, success: function(data, textStatus, XMLHttpRequest) { $('#submitted').html(data); } }); 

实际上,我应该在1秒钟的setInterval内进行此调用以显示进度。

当然这不起作用(或者为什么我应该发布它),我找不到任何同时有2个ajax调用的参考。

同时进行两次ajax调用是完全可以接受的。 但是我不会使用setInterval ,因为如果返回需要的时间超过一秒,最终可能会多次调用checkprogress.php。 你最好让成功方法启动一个新的ajax请求,可能是在超时后,例如:

 function checkProg(){ $.ajax({ type: "GET", url: "checkprogress.php", data: dataString, success: function(data, textStatus, XMLHttpRequest) { $('#submitted').html(data); if (/* not yet complete */) { setTimeout(checkProg,500); } } }); } 

有多少ajax请求可以同时处于活动状态。 这取决于浏览器,应该接近3.我相信可以同时激活两个请求,但不建议这样做。

我建议重新设计您的服务器代码,以立即回复表单提交,确认接收命令。 然后使用轮询显示进度。