我正在编写一个基于 PHP 的在线幻想宠物模拟游戏。我对AJAX不是很熟悉,所以在回答时请记住这一点。
在宠物页面上,我希望用户能够在不需要重新加载整个页面的情况下给宠物喂食/饮水/玩耍 - 这就是我使用 AJAX 的原因。这是我到目前为止所拥有的:
工作脚本
$(function() {
$(".petcareFood").click(function(event) {
event.preventDefault();
$("#petcareFood").load($(this).attr("href"));
});
});
$(function() {
$(".petcareWater").click(function(event) {
event.preventDefault();
$("#petcareWater").load($(this).attr("href"));
});
});
$(function() {
$(".petcarePlay").click(function(event) {
event.preventDefault();
$("#petcarePlay").load($(this).attr("href"));
});
});
</script>
工作 HTML
<a class=\"petcareFood\" href=\"petcare.php?pet=#&action=#\">Feed Your Pet</a>
<a class=\"petcareWater\" href=\"petcare.php?pet=#&action=#\">Water Your Pet</a>
<a class=\"petcarePlay\" href=\"petcare.php?pet=#&action=#\">Play With Your Pet</a>
现在,我上面列出的一切都像一个魅力!这是我的问题:我希望这些链接也更新另一个 DIV - 包含更新状态栏的那个,显示他们的宠物有多饿/渴/不开心。目前,我正在这样做:
几乎可以工作的脚本
$(function() {
$(".petcareFood").click(function(event) {
event.preventDefault();
$('#petcareHunger').load('ajax/hunger.php?pet=#');
});
});
$(function() {
$(".petcareWater").click(function(event) {
event.preventDefault();
$('#petcareThirst').load('ajax/thirst.php?pet=#');
});
});
$(function() {
$(".petcarePlay").click(function(event) {
event.preventDefault();
$('#petcareMood').load('ajax/mood.php?pet=#');
});
});
上面的脚本使得当用户单击其中一个 HTML 链接时,它会更新两个 DIVS(一个 DIV 包含用户喂食/饮水/与宠物玩耍时显示的消息,另一个包含状态栏)。现在...看起来一切都很好,但是...如果两个脚本同时更新,则处理状态栏的 PHP 不会更新 - 它仍在检索旧信息。
我对你们所有人的问题是:有什么方法可以延迟运行第二组脚本(以便在 PHP 对 MySQL 进行更改后它会更新)?
我尝试在“几乎可以工作的脚本”之前插入它:
setTimeout(function() {
$('#petcareMood').load('ajax/mood.php?pet=#');
}, 2000);
但是,它不起作用。嗯 - 它确实,但只有一次。用户每天至少需要和他们的宠物一起玩 3 次才能获得 100% 的快乐,因此仅将第二个 DIV 延迟一次对我来说并不合适。当我尝试多次添加相同的脚本时,它就停止了一起工作。我能做些什么?!
如果您想查看运行情况的屏幕截图,请询问。我很乐意应要求提供。
先感谢您!