0

我在 Windows 7 机器上的 IIS 中运行一个测试站点。

我正在向服务器发送一个 ajax 请求以运行,我知道它正在工作,因为我正在我的数据库中保存这个记录。

一旦我开始运行进程,我希望能够离开页面并让脚本继续运行。

在我启动脚本并从导航中选择不同页面的那一刻,我的浏览器似乎停止了 ajax 请求(脚本仍在服务器端运行),但在服务器端脚本完成运行之前不允许我的浏览器重定向。

我在用着:

$.post('path_to_script',{key:val},function(data){});

在我的 jQuery 文件中调用脚本和我正在使用的 php 脚本中:

ignore_user_abort(true);
set_time_limit(0);

正如我在这里的其他帖子中看到的那样。

我是否遗漏了什么,因为这是我第一次尝试运行后台进程?

4

2 回答 2

1

我认为这是会话问题。您的 path_to_script 脚本启动会话,并且在它关闭会话之前,没有其他 php 脚本可以打开会话。并且由于中止请求不会停止 ajax 脚本,补救措施是尽快关闭会话。

于 2013-07-17T09:43:01.713 回答
0

这是一个前端问题。基本上你必须在页面卸载时取消 ajax 请求。php 脚本本身将在后台继续运行

var ajax_request = $.ajax(...); 
$(window).unload( function () { ajax_request.abort(); } );
于 2013-07-17T09:29:45.860 回答