AJAX从旧的AJAX调用返回数据

时间:2016-10-18 17:09:46

标签: php jquery ajax

我有一个页面,通过AJAX调用动态加载数据来填充。

主页:

$( document ).ready(function() {
  $( "#searchbar" ).load( "searchbar.php" );
});
$( document ).ajaxStart(function() {
  $( "#loader" ).show();
});
$( document ).ajaxComplete(function() {
  $( "#loader" ).hide();
});

searchbar.php:

$( "#search" ).submit(function( event ) {
  event.preventDefault();
  var name = encodeURIComponent($( "#name" ).val());
  var srv = $( "input:radio[name=server]:checked" ).val();
  $.ajax
  ({
      cache: false,
      type: "GET",
      url: "playercard.php",
      data: "name=" + name + "&server=" + srv,
      success: function (msg)
      {      
              $("#contentarea").html(msg).fadeIn('slow');
      }
  });
  return false;
});

playercard.php(主要内容):

$( document ).on('click', '#refreshbutton', function() {
  $.ajax
  ({
      cache: false,
      type: "GET",
      url: "playercard.php",
      data: "name=<?php echo $summoner; ?>&server=<?php echo $server;     ?>",
      success: function (msg)
      {      
              $("#contentarea").html(msg).fadeIn('slow');
      }
  });
  return false;
});

第一次搜索时一切正常。 (键入搜索,提交,内容区域填充来自playercard.php的数据)playercard.php上的刷新按钮也可正常工作。

但是,如果我进行另一次搜索,内容区域会填充新内容。但是当我单击刷新按钮时,它会重新加载第一次搜索中的数据。 (即使禁用了缓存并且get参数似乎正确。)

有什么可能导致这种情况的想法吗?

2 个答案:

答案 0 :(得分:0)

试试这个;)

此行导致此意外行为:

data: "name=<?php echo $summoner; ?>&server=<?php echo $server;     ?>",

在这里,您使用PHP设置值,对于您需要使用与searchbar.php中相同的JavaScript值替换这些值所需的每个请求,这些值始终相同;因此,请使用以下代码替换playercard.php

$(document).on('click', '#refreshbutton', function(event){
  event.preventDefault();
  var name = encodeURIComponent($( "#name" ).val());
  var srv = $( "input:radio[name=server]:checked" ).val();
  $.ajax({
      cache: false,
      type: "GET",
      url: "playercard.php",
      data: "name=" + name + "&server=" + srv,
      success: function(msg)
      {
        $("#contentarea").html(msg).fadeIn('slow');
      }
    });
  return false;
});

答案 1 :(得分:0)

我建议的第一件事是在数据中添加一个随机数。 所以数据部分将是:

data: "name=" + name + "&server=" + srv +"&random="+Math.random(),

这样,url+data总是不同的。 有时url被缓存,它总是返回相同数据的相同值。

另一方面,我会尽量避免使用event.preventDefault();,返回false,这就足够了。