【问题标题】:Getting the same content when refreshing a page after filtering some data with ajax使用ajax过滤一些数据后刷新页面时获得相同的内容
【发布时间】:2012-10-26 01:11:42
【问题描述】:

这是我的情况:

在页面的中心,我有内容目录:<div id="content"></div>

在页面的右侧,我有一个<form method="post" action="?p=search">,带有一些输入字段和一个提交按钮:<input type="submit" id="searchButton" />

我在将表单提交到index.php 时正在执行 AJAX 请求,只是因为索引加载了我的所有环境,然后它包含了search.php 并退出。

search.php 文件返回 json 一个数组,该数组由发送到数据库的查询返回。

有了这个返回,当请求结束时,我用数据更新我的内容 div。

但我没有意识到,如果我只是重新加载页面,而不点击搜索按钮,我的所有搜索都会消失,它只会返回默认页面所做的主要内容查询..

我该如何解决?有什么好的做法吗?

谢谢,谢谢,谢谢。

【问题讨论】:

  • 什么时候重新加载?我假设您想单击提交按钮并执行 AJAX 请求,然后将数据添加到您的页面?
  • 是的,这就是我正在做的。但是当我重新加载页面时,只需按“F5”或类似的东西,我不会得到相同的结果,因为 ajax 请求只是在提交表单时完成..
  • 是的。 (据我所知)你无能为力。正如您所说,当您重新加载页面时,您通过表单提交的所有数据都消失了。你能解释一下你的情况,为什么要重新加载页面?
  • 我不想这样做,但是假设用户正在搜索内容,然后他只想重新加载页面..他所有的搜索都将消失,我只想处理这种情况..但我还不知道。
  • 您可以做的:将您的表单方法从“POST”更改为“GET”。他在表格中填写的所有数据都可以从您的 URL 访问。所以你甚至可以用 PHP 刷新后获取数据。

标签: php javascript jquery ajax json


【解决方案1】:

在搜索中尝试使用 ajax 时需要添加首字母。

当 initial 不为 null 时再次调用你的 ajax,尝试$(window).load(function () 来检测你的 initial。

您可以选择 cookie 作为首字母。

例如:

  //assume this call your ajax

  var ajax_search = function(str) {
      $.ajax({
        type: "POST",
        url: "some.php",
        data: $str
      }).done(function( msg ) {
        alert( "Data Saved: " + msg );
        setCookie("IsSubmitSearch", "true", 1);
      });
  }

  // when click submit search
  $("#search").click(function() {
      var str = $("#inputSearch").serialize();
      ajax_search(str);

      return false;
  });

  $(window).load(function () {
      var IsSubmitSearch = getCookie("IsSubmitSearch");
      if (IsSubmitSearch != null && IsSubmitSearch != "") {
          //cookie exists then you refreshed this page(F5, reload button or right click and reload)
          //SOME CODE
          var str = $("#inputSearch").serialize();
          ajax_search(str);
          DeleteCookie("IsSubmitSearch");
       }
       else {
          //cookie doesnt exists then you landed on this page
          //SOME CODE
          setCookie("IsSubmitSearch", "true", 1);
       }
  });

【讨论】:

  • 谢谢@hendrathings,我会尝试在我的会话中做这样的事情。
猜你喜欢
  • 1970-01-01
  • 2017-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多