$.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... -->