【问题标题】:jquery ajax requests are not responding on the new tab after the php form submissionphp 表单提交后,jquery ajax 请求在新选项卡上没有响应
【发布时间】:2016-08-12 07:33:50
【问题描述】:

您好,我正在使用 php 在表单提交单击时提交表单,我正在使用 jquery 打开一个新窗口。

打开窗口后,php 表单会在该页面上提交,但需要 5 到 10 分钟,具体取决于文件大小,因为我在将文件上传到用户上传的 localhost 和新标签后处理文件数据想要使用 jquery ajax 显示处理后的数据进度,但是在新窗口选项卡上,ajax 请求正在发送,但如果我点击发送的请求,它们不会被发送到 chrome 网络选项卡中的服务器,它会显示这个

显示临时标题

表示服务器没有返回任何响应。

但是在表单提交完成并处理文件数据之后,jquery ajax 请求将返回状态 200k 和响应

这是我使用jqyery的表单提交新窗口打开代码

 $(".btnDataMigrate").click(function (e) {
                var fileName = $("#filesToUpload").val();
                var path = $(this).attr("data-popupUrl")
                    if(fileName) { 
                        window.open(path,'Data Migrate Files Upload Status','width=800,height=800');
                    } else { // no file was selected
                    }

            });

这里是jquery ajax请求代码

 function fetch_files_progess(){
            $.ajax({
                type:'post',
                url:base_path()+'/data_migration/fetch_completed_files',
                data:{},
                dataType:'json',
                success: function(response){


                    $('#notice').html(response.result);


                },
               error: function(response){
               }
            });


        }

fetch_files_progess();
setInterval(function(){fetch_files_progess();}, 9000);

请帮助我如何在表单提交过程中从 jquery ajax 请求中获得响应。

另外,如果打开其他 localhost 页面,则在表单提交过程中也不要打开。

实际上,我想在 php 表单提交期间在新选项卡上完成处理文件状态。这就是为什么我在新选项卡上使用 jquery ajax 来查找已处理文件状态的原因。 我在 xampp 本地主机上。

谢谢

【问题讨论】:

  • 如果您要发布一个大文件,那么您需要增加服务器对请求的响应时间。您需要增加 POST 大小、请求超时和保持活动时间。
  • @AfshanShujat 文件大小在 50kb 到 2 MB 之间,我将 php set_time_limit 设置为 0 文件正在提交并成功处理主要问题是我无法在其他页面上发送 ajax 请求php的表单提交期间

标签: javascript php jquery ajax forms


【解决方案1】:

你应该使用Sitepoint post中解释的一些食谱

您应该不时发出 AJAX 请求并从会话中获取 $_SESSION[$key]["bytes_processed"]$_SESSION[$key]["content_length"]。并正确显示。

【讨论】:

  • 我不想跟踪文件上传。我想跟踪我上传的文件有多少被处理了我在这里遇到的主要问题是我的服务器没有响应我的任何 jquery ajax当我点击表单提交时,文件上传和文件处理期间的请求
  • 我猜,您在网络服务器上的设置有误。你使用 Apache 还是 Nginx?查看 MaxClients 或 MaxRequests 等设置
  • 我正在使用 Apache 好的,让我看看。
  • 我已经运行了 phpinfo(),它向我显示了每个孩子的最大请求数:0 - 保持活动状态:开启 - 每个连接的最大数:100(我的最大请求数设置是否正确)...?但是我找不到 MaxClients 你能告诉我在哪里可以找到 php 中的 MaxClients 我也在 httpd.config 文件中查看过它
  • 我已经阅读了这篇文章,但我找不到任何 MaxClients 你能告诉我如何找到它我正在使用 php 5.6 xampp
【解决方案2】:

问题是服务器端仍在处理请求。如果我们使用 PHP 或 ASP 之类的会话数据,会话数据将被锁定,直到 ajax 完成。因此,要让用户继续浏览网站,您必须调用 session_write_close()。 这会保存会话并将其解锁,以便其他等待继续的页面继续。如果没有这个,可能会有多个页面等待解除锁定。

使用 session_write_close(). 解决了我的问题...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    相关资源
    最近更新 更多