您好:我正在开展一个项目,我将从一个列为页面按钮的联盟中划分。当您点击按钮时,每个部门会显示不同的团队列表。所有部门和团队都存储在mysql数据库中,并通过“div_id”链接在一起。计划是让按钮使用javascript或Jquery将'div_id'发送到一个函数;然后使用ajax访问外部php文件,然后使用div_id查找该部门的所有团队并在页面上打印它们我一直把它拼凑起来并让各种各样的部分工作。但是当我把它们放在一起时;它似乎是ajax部分 - 如果数据被更改,它不会从数据库中提取新数据。事实上,如果我更改PHP文件以回显更多数据或其他内容,它继续使用原始未更改的文件。因此,如果更改的数据未更新,并且文件更改未更新。我确实发现我是否真的使用新名称复制文件然后让我的ajax调用使用该文件;它将使用新代码和当时的新数据运行它。但是现在所有内容都被锁定并且无法进行任何更改。 / p>
所以 - 我不太了解ajax并尝试这样做。我不确定这对于我正在使用的内容以及动态更改团队列表是否完全正常,使用ajax调用PHP文件无法通过这种方式完成。
或者 - 也许我的ajax代码和文件有问题,这使得它的表现如此?我将粘贴我的ajax代码和php文件的代码......
这是ajax调用:
var answer = DivId;
$.ajax({
type: 'GET',
url: 'path_to_file/gscript2.php',
data: 'answer=' + answer,
success: function(response) {
$('#ajax_content').html(response);
}
});
,这是它调用的script.php文件(删除了数据库凭据):
<?php
if (!empty($_SERVER['HTTP_X_REQUESTED_WITH'])
&& strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'
) {
// AJAX request
$answer = $_GET['answer'];
$div_id=$answer;
echo "div id is: " . $div_id . "<br/>";
mysql_connect($hostname,$username, $password) OR DIE ('Unable to connect to database! Please try again later.');
mysql_select_db($dbname);
$result_g1 = mysql_query("SELECT * FROM teams WHERE div_id=$div_id");
while($row = mysql_fetch_array($result_g1, MYSQL_BOTH))
{
$team_id=$row[team_id];
$team_name=$row[team_name];
echo $team_id . " " . $team_name . "<br/>";
}
}
?>
所以 - 总结一下 - 这有什么不妥吗使它做到这一点?或者它是完全正常的,我必须找到一种不同的方式?
非常感谢...
答案 0 :(得分:1)
您的浏览器很可能是缓存。
尝试添加cache: false
:
$.ajax({
cache: false,
type: 'GET',
...
jQuery文档解释说,通过这样做,它只需添加一个GET参数即可使URL中的每个请求都是唯一的。
它的工作原理是将“_ = {timestamp}”附加到GET参数。
答案 1 :(得分:0)
我认为这是由浏览器的缓存机制引起的。
尝试在请求中添加随机数,以便浏览器不会缓存结果:
var answer = DivId;
$.ajax({
type: 'GET',
url: 'path_to_file/gscript2.php?r=' + Math.random(),
data: 'answer=' + answer,
success: function(response) {
$('#ajax_content').html(response);
}
});
或者通过以下方式关闭jQuery的缓存选项:
var answer = DivId;
$.ajax({
type: 'GET',
url: 'path_to_file/gscript2.php',
data: 'answer=' + answer,
success: function(response) {
$('#ajax_content').html(response);
},
cache: false
});
或(全球):
$.ajaxSetup({ cache: false });