Javascript 页面重定向后JQuery POST中止
我有jQueryAjax POST操作,它将一些数据保存到数据库中。该操作大约需要不到20毫秒的时间。这段javascript嵌入在.NETWebForms应用程序中(我无法控制)。这个.NET应用程序在提交按钮内触发我的帖子,并重定向到另一个页面。现在,对于以下浏览器,POST永远不会执行:Javascript 页面重定向后JQuery POST中止,javascript,ajax,post,asynchronous,Javascript,Ajax,Post,Asynchronous,我有jQueryAjax POST操作,它将一些数据保存到数据库中。该操作大约需要不到20毫秒的时间。这段javascript嵌入在.NETWebForms应用程序中(我无法控制)。这个.NET应用程序在提交按钮内触发我的帖子,并重定向到另一个页面。现在,对于以下浏览器,POST永远不会执行: 窗户上的家具 MAC上的狩猎 MAC上的Chrome IE工作良好,甚至可以在Windows上使用Chrome 因此,我做了一些测试,并试图模仿.NET Web表单网站,幸运的是,我可以通过在保存操作
- 窗户上的家具
- MAC上的狩猎
- MAC上的Chrome
我感觉“async:false”可能不是一个好的解决方案。我的Javascript构造可以吗?我的背景是C#,我仍在学习如何在javascript类定义中正确嵌入/使用函数。因此,我的错误可能与我的函数的错误构造有关(javascript垃圾收集器正在清理东西或其他东西)。或者,您可以执行重定向(
window.location.href=”,而不是将设置async
设置为false。“http://www.google.com“;
)在success
回调$.ajax
调用中(并离开async:true
):
希望对您有所帮助。或者,您可以执行重定向(
window.location.href=”,而不是将async设置为falsehttp://www.google.com“;
)在$的成功回调中。ajax
调用(并离开async:true
):
希望对您有所帮助。或者,您可以执行重定向(window.location.href=”,而不是将async设置为falsehttp://www.google.com“;
)在$的成功回调中。ajax
调用(并离开async:true
):
希望对您有所帮助。或者,您可以执行重定向(window.location.href=”,而不是将async设置为falsehttp://www.google.com“;
)在$的成功回调中。ajax
调用(并离开async:true
):
希望这能有所帮助。在本例中,您使用async:false是正确的
弃用说明是指在jqXHR对象上设置回调处理程序,但您已经通过options对象提供了回调处理程序
在这种情况下使用async:false是正确的,因为页面无论如何都会关闭,用户也不希望它有响应,所以执行阻塞大部分不会被注意到(除了20毫秒几乎是不可想象的事实)
从提供的信息来看,我看不到比这更干净的解决方案。在这种情况下,使用async:false是合理和正确的
弃用说明是指在jqXHR对象上设置回调处理程序,但您已经通过options对象提供了回调处理程序
在这种情况下使用async:false是正确的,因为页面无论如何都会关闭,用户也不希望它有响应,所以执行阻塞大部分不会被注意到(除了20毫秒几乎是不可想象的事实)
从提供的信息来看,我看不到比这更干净的解决方案。在这种情况下,使用async:false是合理和正确的
弃用说明是指在jqXHR对象上设置回调处理程序,但您已经通过options对象提供了回调处理程序
在这种情况下使用async:false是正确的,因为页面无论如何都会关闭,用户也不希望它有响应,所以执行阻塞大部分不会被注意到(除了20毫秒几乎是不可想象的事实)
从提供的信息来看,我看不到比这更干净的解决方案。在这种情况下,使用async:false是合理和正确的
弃用说明是指在jqXHR对象上设置回调处理程序,但您已经通过options对象提供了回调处理程序
在这种情况下使用async:false是正确的,因为页面无论如何都会关闭,用户也不希望它有响应,所以执行阻塞大部分不会被注意到(除了20毫秒几乎是不可想象的事实)
从提供的信息来看,我看不到比这更干净的解决方案。感谢您调查我的问题,但是window.location.href只是测试代码,不属于生产代码。NET代码正在执行类似Response.Redirect的操作,因此我希望它使用javascript重定向来模拟它,这会导致相同的错误。Response.Redirect
?服务器端代码?如果是,浏览器客户端将不会被重定向(但AJAX请求上下文将被重定向)。如果您希望在ajax调用成功后重定向,请在客户端执行重定向,而不要在服务器端执行重定向。NET Web表单有一个表单提交按钮2。客户端这个提交按钮调用我的保存,3。然后它转到服务器发布自己的日志
//BUTTON
$('#someSaveButton').click(function () {
GlobalObject.save();
});
// GLOBAL OBJECT CONTAINING ALL MY ACTIONS (delete, check, save, get)
var GlobalObject = (function () {
return {
save: function () {
...
someMode.save(); //NOTE: Depending on an url parameter different save methods are supported
window.location.href = "http://www.google.com"; //MIMIC-ING REQUEST ABORTING
}
};
})();
//EVENTUALLY THE SAVE:
function save() {
$.ajax({
type: "POST",
cache: false,
url: ...,
data: ...,
contentType: "application/json",
dataType: "json",
success: function (response) {
...
},
error: function (msg) {
...
}
});
}
//BUTTON
$('#someSaveButton').click(function () {
GlobalObject.save();
});
// GLOBAL OBJECT CONTAINING ALL MY ACTIONS (delete, check, save, get)
var GlobalObject = (function () {
return {
save: function () {
// ...
someMode.save(); //NOTE: Depending on an url parameter different save methods are supported
}
};
})();
//EVENTUALLY THE SAVE:
function save() {
$.ajax({
type: "POST",
cache: false,
url: ...,
data: ...,
contentType: "application/json",
dataType: "json",
success: function (response) {
// do stuff
// more stuff
// ... redirect when completed stuff
window.location.href = "http://www.google.com"; //MIMIC-ING REQUEST ABORTING
},
error: function (msg) {
// ...
}
});
}