#javascript #ajax #function #refresh
#javascript #аякс #функция #обновить
Вопрос:
Я пытаюсь обновить div после обратного вызова с использованием функций ajax. В принципе, я хочу /includes/view_game/achievements.inc.php для перезагрузки в div #achievements_tab. Обратный вызов (я не включил его в коды ниже) работает хорошо и запускает функцию AchievementRefresh, найденную ниже (непрозрачность div изменяется на 0.5, но она остается такой, и обновление не выполняется).
Эти две функции используются для другого аналогичного обновления ajax на моем сайте, которое работает хорошо. Поэтому я попытался изменить код, но поскольку он предназначен для несколько иной цели, возможно, у меня неправильный подход.
function AjaxPost(url, success_function) {
xmlHttp = GetXmlHttpObject();
if (xmlHttp == null) {
alert("Your browser doesn't support AJAX. You should upgrade it!")
return
}
xmlHttp.onreadystatechange = success_function;
xmlHttp.open("POST", url, true);
xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
}
Эта функция AjaxPost используется в другой функции ниже:
function AchievementRefresh() {
div('achievements_tab').style.opacity = 0.5;
div('highscore_pages').innerHTML = '<img src="' site_url '/images/loader.gif" />';
AjaxPost(site_url "/includes/view_game/achievements.inc.php?", '',
function () {
div('achievements_tab').innerHTML = xmlHttp.responseText;
div('achievements_tab').style.opacity = 1;
}
)
}
Комментарии:
1. Ошибка, где вы использовали jQuery?
Ответ №1:
Использование load
$('#achievements_tab').load('/includes/view_game/achievements.inc.php');
См.: http://api.jquery.com/load /
Редактировать, например.
function AchievementRefresh() {
$('#achievements_tab').css('opacity', 0.5);
$('#highscore_pages').html('<img src="' site_url '/images/loader.gif" />');
$('#achievements_tab').load('/includes/view_game/achievements.inc.php')
.success(function() {
$('#achievements_tab').css('opacity', 1);
});
}
Комментарии:
1. Куда мне это вставить? Нужно ли мне сохранять функцию AjaxPost?
2. Я смог заставить обновление работать, используя следующую функцию, но я получаю ошибки mysql в div (не удается подключиться к базе данных, потому что password = NO и многие другие), поэтому я предполагаю, что обновление не включало config.php и другие файлы, необходимые для правильной работы кода. Какие-нибудь подсказки? Спасибо! AchievementRefresh() { div(‘achievements_tab’).style.opacity = 0.5; $(‘#achievements_tab’).load(‘/includes/view_game/achievements.inc.php ‘); div(‘achievements_tab’).style.opacity = 1; }
Ответ №2:
Попробуй это.
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
if(xmlhttp.status == 200) {
div('achievements_tab').innerHTML = xmlHttp.responseText;
div('achievements_tab').style.opacity = 1;
}
}
};`
Имя и идентификатор — это пример.
Кроме того, некоторые изменения:
AjaxPost(site_url "/includes/view_game/achievements.inc.php");
var params= 'name' encodeURIComponent(name) 'amp;id=' encodeURIComponent(id)
Параметры не должны быть в URL-адресе.
xmlhttp.send(params);