ajax — функция javascript для обновления div

#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);