$.ajax 在同一页面上提交并且表单仅在第一次有效
$.ajax submit on the same page and form works only the first time
我正在使用 smoothState.js,我在提交表单然后重新加载(刷新)页面时遇到问题。
当我第一次提交时,它按预期工作。页面刷新为输入中的 new/changed 数据。但是当我第二次提交时,数据显然得到了 posted,但在刷新时加载了旧的未更改数据。只有在我进行手动刷新(再次单击浏览器中的刷新按钮)后,新更改的数据才会出现。 这只发生在 second/third/fourth 等......以相同的形式提交到相同的页面。
$('#companyProfile').submit(function(e) {
e.preventDefault();
if ( $(this).parsley().isValid() ) {
var $form = $("#companyProfile");
$.ajax({
type : "POST",
async : true,
url : '/customerProfile.do?',
data : $form.serialize(),
success : function(data) {
console.log("Submit happened");
var smoothState = $('#main-cont').smoothState().data('smoothState');
smoothState.load(window.location.reload);
}
});
return false;
}
});
我添加了一个 console.log("Submit happened");
并且发生的事情是第一次提交 post 源应该是 viewOrderSettings.jsp
,但第二次它来自 VM34065:11
,如下面的屏幕截图所示。如果有帮助...
如果它是由缓存引起的,您可以尝试几种选择
避开缓存
在请求末尾附加一个随机数(或日期)。
smoothState.load(window.location+'?'+Math.random());`
如果您要传递其他变量,您可能需要将 ?
更改为 &
。
在HTML
中禁用缓存
<meta http-equiv="Cache-control" content="no-cache">
<meta http-equiv="Expires" content="-1">
使用 Header 禁用缓存(在 PHP 中)
<?php
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
?>
<!-- Here you'd start your page... -->
我正在使用 smoothState.js,我在提交表单然后重新加载(刷新)页面时遇到问题。
当我第一次提交时,它按预期工作。页面刷新为输入中的 new/changed 数据。但是当我第二次提交时,数据显然得到了 posted,但在刷新时加载了旧的未更改数据。只有在我进行手动刷新(再次单击浏览器中的刷新按钮)后,新更改的数据才会出现。 这只发生在 second/third/fourth 等......以相同的形式提交到相同的页面。
$('#companyProfile').submit(function(e) {
e.preventDefault();
if ( $(this).parsley().isValid() ) {
var $form = $("#companyProfile");
$.ajax({
type : "POST",
async : true,
url : '/customerProfile.do?',
data : $form.serialize(),
success : function(data) {
console.log("Submit happened");
var smoothState = $('#main-cont').smoothState().data('smoothState');
smoothState.load(window.location.reload);
}
});
return false;
}
});
我添加了一个 console.log("Submit happened");
并且发生的事情是第一次提交 post 源应该是 viewOrderSettings.jsp
,但第二次它来自 VM34065:11
,如下面的屏幕截图所示。如果有帮助...
如果它是由缓存引起的,您可以尝试几种选择
避开缓存
在请求末尾附加一个随机数(或日期)。
smoothState.load(window.location+'?'+Math.random());`
如果您要传递其他变量,您可能需要将 ?
更改为 &
。
在HTML
中禁用缓存<meta http-equiv="Cache-control" content="no-cache">
<meta http-equiv="Expires" content="-1">
使用 Header 禁用缓存(在 PHP 中)
<?php
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
?>
<!-- Here you'd start your page... -->