[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вопрос про ajax
safiullin.at
Сразу к делу. За основу взял вот это http://www.irbis-team.com/15/13/1.

Проблема в том, что картинка, которая должна мелькать во время исполнения скрипта не отображается в Google Chrome и последней Опере. Во всех же остальных браузерах все ОК. В скрипте который взял на irbis-team ничего не трогал, поменял только путь до картинки, и указал классы куда вставлять результат.



Спустя 21 минута, 57 секунд (23.02.2012 - 14:23) gidrosoldat написал(а):
В соседней теме как раз обсуждаем похожий случай.
Попробуйте поменять функцию Create() на:
function Create() {
var xmlhttp;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}

if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}

Спустя 30 минут, 8 секунд (23.02.2012 - 14:53) safiullin.at написал(а):
gidrosoldat, это не помогло sad.gif

Спустя 11 минут, 39 секунд (23.02.2012 - 15:05) ApuktaChehov написал(а):
safiullin.at - давайте разберемся:

1)Вам нужно убедиться что метод innerHTML действительно работает. Для этого вместо того, что у вас есть(картинка), вставьте туда цифру 1. После этого посмотрите будет ли она мелькать.

2)Если мелькает, значит дело в кроссбраузерности. Т.к. картинка вставляется методом innrHTML, значит не все браузеры позволяют вот так вот вставлять картинку. В свою очередь ее надо вставить более легальными путями, т.е. созданием ДОМ элемента img, добавление в него атрибута src с последующей вставкой его на страницу.

Спустя 7 минут, 15 секунд (23.02.2012 - 15:12) safiullin.at написал(а):
ApuktaChehov, текст вместо картинки тоже не отображается. И вставка идет не через innerHTML, а с помощью jquery.
$('#ajax_load').html('<img src="./img/ajax-loader.gif" alt="Загрузка..." width="128" height="15" />');
Сам результат запроса выводится нормально. Вставляется он также и тудаже.
$('#ajax_load').html(b);
Самое интересное, что когда второй раз нажимаю на кнопку, которая обработчик запускает, уже после выполнения запроса, тогда картинка появляется. А с первого раза ничего нет.

Спустя 6 минут, 43 секунды (23.02.2012 - 15:19) ApuktaChehov написал(а):
safiullin.at - какой JQ? Вы же про irbis-team говорили. blink.gif

Спустя 8 минут, 46 секунд (23.02.2012 - 15:28) safiullin.at написал(а):
ApuktaChehov, ну просто вместо getElementById я использовал селектор jquery и все, остальное не трогал

Спустя 10 минут, 44 секунды (23.02.2012 - 15:39) ApuktaChehov написал(а):
А если у вас JQ, то нафиг вы полезли за "жывым" аяксом?

Спустя 5 минут (23.02.2012 - 15:44) safiullin.at написал(а):
ApuktaChehov, что-то я не понимаю, а как тогда правильней-то будет сделать?

Спустя 3 минуты, 17 секунд (23.02.2012 - 15:47) inpost написал(а):
<img src="/img/ajax-loader.gif" alt="Загрузка..." width="128" height="15" />

Пути от корня давай.

Спустя 3 минуты, 10 секунд (23.02.2012 - 15:50) safiullin.at написал(а):
inpost, а какая разница? прописал от корня, ничего не изменилось...

Спустя 1 минута, 40 секунд (23.02.2012 - 15:52) inpost написал(а):
Ну так код полностью покажи.

Спустя 9 минут, 39 секунд (23.02.2012 - 16:01) safiullin.at написал(а):
var req = Create(); 

function ge(id)
{
return document.getElementById(id);
}

function Create()
{
var xmlhttp;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}

if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}

function Request(query)
{
req.open('post', './action.php' , true );
req.onreadystatechange = Refresh;
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
req.send(query);
}

function Refresh()
{
var a = req.readyState;

if( a == 4 )
{
var b = req.responseText;
$('#ajax_load').html(b);
}
else
{
$('#ajax_load').html('<img src="/img/ajax-loader.gif" alt="Загрузка..." width="128" height="15" />');
}
}


$('.button_send').click(function() {
var query = 'type=sms&recipient='+encodeURIComponent($('#input-recipient').val()) +
'&sender='+encodeURIComponent($('#input-sender').val()) +
'&text='+encodeURIComponent($('#textarea-message').val());
Request(query);
});



<form id="send-sms" class="tab_content" action="#" method="post" name="send-sms">
<input
name="recipient" type="text" id="input-recipient" value="например, 79123456789" />
<input
name="sender" type="text" id="input-sender" value="латинские буквы или цифры (не более 11)" maxlength="11" />
<textarea
name="message" id="textarea-message" rows="" cols=""></textarea>
</form>
<div
class="button_wrap">
<span
class="button button_send"></span>
<span
id="ajax_load"></span>
</div>

Спустя 1 час, 23 минуты, 24 секунды (23.02.2012 - 17:25) inpost написал(а):
alert вызывается? Первым сделай в строчке функции.
Второе - переносить строку нельзя так, как ты перенёс. Это тебе не PHP, тут синтаксис иной для переноса строк.

Спустя 4 часа, 7 минут, 18 секунд (23.02.2012 - 21:32) ApuktaChehov написал(а):
safiullin.at - ну если используете уже JQ на странице, то юзайте его в полной мере, чего по кусочкам-то склеивать.

В вашем случае я начинал бы от самого конца, когда картинка должно появится и двигался все глубже и глубже. Я уже вам написал, убедитесь, что картинка действительно вставляется в тело страницы. Если нет, копайте почему этого не происходит.

Спустя 13 минут, 13 секунд (23.02.2012 - 21:45) bodja написал(а):
safiullin.at
Ваш код - это конечно полный стеб biggrin.gif
Ну хоть innerHTML работает?


_____________
Все программисты — оптимисты: "На этот раз программа обязательно пройдет!", "Я только что нашел последнюю ошибку!".
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.