[===请参阅第二部分,因为我改写了原来的问题====] 我有一个表单在提交时调用Ajax。 Ajax调用一个从Mysql中检索数据的php代码。 一切正常,没有错误。
问题是,当Ajax还在等待完成请求时,我无法取消它。浏览器后退按钮不起作用。点击页面上的任何其他链接都不起作用。
它看起来像某种锁定浏览器的会话锁。
这可能是session_write_close()的任何内容吗?
function getHistory(){
startDate = $('#start_date').val();
endDate = $('#end_date').val();
$.ajax({
url: "/coms/reports/jsonHistory",
type: "POST",
data: {
startDate: startDate,
endDate: endDate,
},
datatype: "text",
success: function (responseObj) {
var resultDataTable = $('#HistoryDataTable').DataTable();
resultDataTable.clear().draw();
for (var key in responseObj) {
if (responseObj.hasOwnProperty(key)) {
duration = responseObj[key]['duration'];
connection_ip = responseObj[key]['connection_ip'];
resultDataTable.row.add([
duration,
connection_ip
]).draw();
}
}
},
complete: function () {
console.log('here i am');
},
error: function () {
}
});
}
$(document).ready(function () {
$("#myFormSubmit").click(function () {
getHistory();
});
}
我已经包含了Ajax Block。 jsonHistory是一个php代码jsonHistory.php,它查询数据库并返回JSON。如果由于大型数据库,此代码可能需要大约一分钟才能完成。因此用户可能会改变主意并希望离开页面,但浏览器会被Ajax锁定。所有这些都是在Zend Framework下实现的。
=============================================== ==
我想将我的问题改写为以下内容:
情况1:旧服务器上的旧应用程序:
情况2:新服务器上的新应用程序“
所以,我的问题是,这可能是什么原因。 是因为Apache设置的差异?这是否与KeepAlive和持久性设置有关?
旧服务器上的Apache上的KeepAlive为OFF。 新服务器上未定义KeepAlive。
是否有任何其他Apache设置或PHP设置可能导致此行为?