document.form.submit() 太慢,无法在 window.close() 之前完成
document.form.submit() is too slow to complete before window.close()
我在保存表单时遇到问题。表单本身有大约 40 行,每行大约有 12 个输入,采用这种样式:
保存后,它应该 POST
然后关闭 window。但是,它从未真正保存过它。这让我觉得它在保存之前关闭了 window 。这是有问题的代码:
$('#save-btn').click(function() {
document.form.submit();
window.close();
};
如果我删除 window.close()
并使用检查器,那么我在参数字段中看到所有值都正确保存。这再次让我认为 window 即将提前结束。
我试过在上面的 #save-btn
函数中使用以下内容:
setTimeout('window.close()',5000)
然而,这似乎从来没有在 5 秒后执行 window.close() 并且似乎糟糕的编程迫使它等待 5 秒然后在它可能需要任何时间时关闭。
然后我尝试使用 AJAX 请求,例如:
var _url = 'submit?nameParam="+nameParam+"&com=editlist&'+$('form').serialize();
console.log(_url); //just to see what its pushing out
$.ajax({
url: _url,
error: function(){
alert('Error submitting form.');
},
success: function() {
window.close();
}
});
这导致 414 Request-URI Too Long
。我知道这种情况应该是 POST
开头,但我只是想让它起作用。
仅仅因为,我们的表单是这样设置的:
<form name="form" action="submit" method="post">
我们的解决方案是从操作页面关闭页面
您的 ajax 方法是正确的,因为您可以理解使用代码正确完成表单提交,成功后 post 很容易关闭 window。
要发送 POST 请求,您必须对代码进行一些小的更改...
- 不要序列化您的表单并添加 URL,这不安全(不适用于您的情况)。
- Post 你的价值观是 "post data".
这是关于它的文档。
https://api.jquery.com/jquery.post/
如果您不明白如何操作,请尝试更新您的问题。
从您的 _url 中删除序列化数据,而是通过具有 data
设置的 .ajax() 请求传递它:
var _url = 'submit?nameParam="+nameParam+"&com=editlist';
$.ajax({
url: _url,
method: "POST",
data: $('form').serialize(),
error: function() {
alert('Error submitting form.');
},
success: function() {
window.close();
}
});
我在保存表单时遇到问题。表单本身有大约 40 行,每行大约有 12 个输入,采用这种样式:
保存后,它应该 POST
然后关闭 window。但是,它从未真正保存过它。这让我觉得它在保存之前关闭了 window 。这是有问题的代码:
$('#save-btn').click(function() {
document.form.submit();
window.close();
};
如果我删除 window.close()
并使用检查器,那么我在参数字段中看到所有值都正确保存。这再次让我认为 window 即将提前结束。
我试过在上面的 #save-btn
函数中使用以下内容:
setTimeout('window.close()',5000)
然而,这似乎从来没有在 5 秒后执行 window.close() 并且似乎糟糕的编程迫使它等待 5 秒然后在它可能需要任何时间时关闭。
然后我尝试使用 AJAX 请求,例如:
var _url = 'submit?nameParam="+nameParam+"&com=editlist&'+$('form').serialize();
console.log(_url); //just to see what its pushing out
$.ajax({
url: _url,
error: function(){
alert('Error submitting form.');
},
success: function() {
window.close();
}
});
这导致 414 Request-URI Too Long
。我知道这种情况应该是 POST
开头,但我只是想让它起作用。
仅仅因为,我们的表单是这样设置的:
<form name="form" action="submit" method="post">
我们的解决方案是从操作页面关闭页面
您的 ajax 方法是正确的,因为您可以理解使用代码正确完成表单提交,成功后 post 很容易关闭 window。
要发送 POST 请求,您必须对代码进行一些小的更改...
- 不要序列化您的表单并添加 URL,这不安全(不适用于您的情况)。
- Post 你的价值观是 "post data".
这是关于它的文档。
https://api.jquery.com/jquery.post/
如果您不明白如何操作,请尝试更新您的问题。
从您的 _url 中删除序列化数据,而是通过具有 data
设置的 .ajax() 请求传递它:
var _url = 'submit?nameParam="+nameParam+"&com=editlist';
$.ajax({
url: _url,
method: "POST",
data: $('form').serialize(),
error: function() {
alert('Error submitting form.');
},
success: function() {
window.close();
}
});