我有一个页面,通过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参数似乎正确。)
有什么可能导致这种情况的想法吗?
答案 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,这就足够了。