Я программирую онлайн-игру для моделирования фэнтези-игр на основе PHP. Я не очень хорошо знаком с AJAX, поэтому, пожалуйста, помните об этом при ответе.Задержка 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-ссылок, он обновляет две дивы (один DIV, содержащий сообщение, отображаемое, когда пользователь подает/воды/играет со своим питомцем, а другой содержит строку состояния). Теперь ... кажется все хорошо и хорошо, НО ... если оба скрипта обновляются точно в одно и то же время, тогда PHP, который обрабатывает строку состояния, не обновляется - он все равно извлекает старую информацию.
Мой вопрос для всех вас: есть ли способ отложить запуск второго набора сценариев (чтобы он обновлялся после того, как PHP вносит изменения в MySQL)?
Я попытался вставить это до «почти рабочего сценария»:
setTimeout(function() {
$('#petcareMood').load('ajax/mood.php?pet=#');
}, 2000);
Однако, это не работает. Ну, это так, но только один раз. Пользователи должны играть со своими питомцами по крайней мере 3 раза в день, чтобы достичь 100% счастья, и поэтому отсрочка второго DIV только однажды не сократит его для меня. Когда я пытался несколько раз добавлять один и тот же скрипт, он просто переставал работать вместе. Что я могу сделать?!
Если вы хотите посмотреть снимки экрана, как все работает, просто спросите. Я буду рад предоставить их по запросу.
Спасибо заранее!
СПАСИБО ТАК МНОГО! Оно работало завораживающе! = D – Connie