$ .ajax提交在同一页面上,表单仅在第一次工作

时间:2017-02-19 18:37:35

标签: javascript jquery ajax smoothstate.js

我正在使用smoothState.js,我遇到了提交表单然后重新加载(刷新)页面的问题。

当我第一次提交时,它按预期工作。页面将刷新输入中的新/已更改数据。但是当我第二次提交它时,数据显然会被发布,但是在刷新时,旧的未更改数据会被加载。只有在我进行手动刷新(再次单击浏览器中的刷新按钮)后才会出现新的更改数据。 这只发生在第二/第三/第四等...在同一表格上提交到同一页面。

$('#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");,其中发生的情况是,第一次提交帖子的来源应该是viewOrderSettings.jsp,但第二次来自{{1}如下面的屏幕截图所示。如果这有帮助...

enter image description here

1 个答案:

答案 0 :(得分:1)

如果由缓存引起,您可以尝试一些选项

绕过缓存

在请求结尾附加一个随机数(或日期)。

smoothState.load(window.location+'?'+Math.random());` 

如果您传递其他变量,可能需要将?更改为&

禁用HTML

中的缓存
<meta http-equiv="Cache-control" content="no-cache">
<meta http-equiv="Expires" content="-1">

使用标头(在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... -->