Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / [JS] AJAX + Mozilla FireFox - непонятный косяк / 13 сообщений из 13, страница 1 из 1
03.03.2008, 13:03
    #35166801
xxx_G_M_S_xxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] AJAX + Mozilla FireFox - непонятный косяк
Вот такое работает в Опера и ИЕ:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
var gms_ajax_response = new String();

function gms_ajax_process(obj){
  if (obj.readyState ==  4 ) {
    gms_ajax_response = obj.responseText;
  }
}
function gms_ajax_get_object(){
  var obj = false;
  if (window.XMLHttpRequest) {
    obj = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    obj = new ActiveXObject("Microsoft.XMLHTTP");
  }
  return obj;
}

function gms_ajax_prepare(obj){
  obj.onreadystatechange = function() {gms_ajax_process(obj);};
}

function gms_ajax_send(obj, addr, method){
  obj.open(method, addr, false);
  obj.send(null);
}

function ajaxGET(addr){
  var obj = gms_ajax_get_object();
  gms_ajax_prepare(obj);
  alert(addr);
  gms_ajax_send(obj, addr, 'GET');
  var i =  0 ;
  while(i <  10000  && obj.readyState !=  4 ){
  	i++;
  }
  return gms_ajax_response;
}
В мазилле не работает, в качестве ответа функция ajaxGET возвращает "undefined". Хэлп, хэлп!!!

СИСЬКИ ДЕВКИ ПОРНО
...
Рейтинг: 0 / 0
03.03.2008, 13:23
    #35166862
xxx_G_M_S_xxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] AJAX + Mozilla FireFox - непонятный косяк
Разобрался сам. Почему-то мазила отказывалась наотрез выполнять мой обработчик, сделал проще:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
function ajaxGET(addr){
  var obj = gms_ajax_get_object();
  gms_ajax_response = '';
  gms_ajax_prepare(obj);
  gms_ajax_send(obj, addr, 'GET');
  var i =  0 ;
  while(i <  10000  && obj.readyState !=  4 ){
  	i++;
  }
  if (gms_ajax_response == '') return obj.responseText;
  return gms_ajax_response;
}
Скажу даже больше: пытаюсь воткнуть "gms_ajax_response = obj.responseText" - и gms_ajax_response ПУСТОЙ! Причем obj.responseText очень даже не пустой... Так и не понял, в чем прикол.
...
Рейтинг: 0 / 0
03.03.2008, 13:56
    #35166980
Garry80
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] AJAX + Mozilla FireFox - непонятный косяк
xxx_G_M_S_xxxРазобрался сам. Почему-то мазила отказывалась наотрез выполнять мой обработчик, сделал проще:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
function ajaxGET(addr){
  var obj = gms_ajax_get_object();
  gms_ajax_response = '';
  gms_ajax_prepare(obj);
  gms_ajax_send(obj, addr, 'GET');
  var i =  0 ;
  while(i <  10000  && obj.readyState !=  4 ){
  	i++;
  }
  if (gms_ajax_response == '') return obj.responseText;
  return gms_ajax_response;
}
Скажу даже больше: пытаюсь воткнуть "gms_ajax_response = obj.responseText" - и gms_ajax_response ПУСТОЙ! Причем obj.responseText очень даже не пустой... Так и не понял, в чем прикол.

Капец... А если респонс придет позже чем цикл досчитает до 10000?
...
Рейтинг: 0 / 0
03.03.2008, 14:38
    #35167142
xxx_G_M_S_xxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] AJAX + Mozilla FireFox - непонятный косяк
Garry80Капец... А если респонс придет позже чем цикл досчитает до 10000?Думал на эту тему... Пришел к выводу, что пока обращаюсь к 127.0.0.1 смысла городить более серьезный огород просто нет Можно вообще итератор, в принципе, выкинуть, я его на этапе тестирования пихал.
...
Рейтинг: 0 / 0
03.03.2008, 14:54
    #35167189
зы
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] AJAX + Mozilla FireFox - непонятный косяк
xxx_G_M_S_xxx Garry80Капец... А если респонс придет позже чем цикл досчитает до 10000?Думал на эту тему... Пришел к выводу, что пока обращаюсь к 127.0.0.1 смысла городить более серьезный огород просто нет Можно вообще итератор, в принципе, выкинуть, я его на этапе тестирования пихал.
бугага, жжесткий код. Подумай в таком случае в сторону синхронных запросов (отличается на один флаг), эффект будет такой же, даже лучше и безбажней
...
Рейтинг: 0 / 0
03.03.2008, 15:19
    #35167239
xxx_G_M_S_xxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] AJAX + Mozilla FireFox - непонятный косяк
зыбугага, жжесткий код. Подумай в таком случае в сторону синхронных запросов (отличается на один флаг), эффект будет такой же, даже лучше и безбажнейБлин... Не показываешь код - кричат "непонятно", показываешь - ржут...

По существу: а вдруг мне потом понадобиться асинхронный запрос? Кстати, там, вроде, вылет по таймауту можно по readyState отследить - как это делается?
...
Рейтинг: 0 / 0
03.03.2008, 15:35
    #35167305
dennny
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] AJAX + Mozilla FireFox - непонятный косяк
xxx_G_M_S_xxx зыбугага, жжесткий код. Подумай в таком случае в сторону синхронных запросов (отличается на один флаг), эффект будет такой же, даже лучше и безбажнейБлин... Не показываешь код - кричат "непонятно", показываешь - ржут...

По существу: а вдруг мне потом понадобиться асинхронный запрос? Кстати, там, вроде, вылет по таймауту можно по readyState отследить - как это делается?
Поставь таймаут и жди по времени - время твоего цикла ессесно отличается на разных тачках.
...
Рейтинг: 0 / 0
03.03.2008, 15:36
    #35167306
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] AJAX + Mozilla FireFox - непонятный косяк
Чего-то типа этого, имеешь ввиду (из гугла):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
<head>
<script>
var req;
var reqTimeout;
 
function loadXMLDoc(url) {
    req = null;
    if (window.XMLHttpRequest) {
        try {
            req = new XMLHttpRequest();
        } catch (e){}
    } else if (window.ActiveXObject) {
        try {
            req = new ActiveXObject('Msxml2.XMLHTTP');
        } catch (e){
            try {
                req = new ActiveXObject('Microsoft.XMLHTTP');
            } catch (e){}
        }
    }
 
    if (req) {
        req.onreadystatechange = processReqChange;
        req.open("GET", url, true);
        req.send(null);
        reqTimeout = setTimeout("req.abort();",  5000 );
    } else {
        alert("Браузер не поддерживает AJAX");
    }
}
 
function processReqChange() {
    if (req.readyState ==  4 ) {
        clearTimeout(reqTimeout);
        document.body.innerHTML=document.body.innerHTML+'<br>'+req.responseText;
    }  
}
 
function requestdata()
{
  loadXMLDoc('hello.txt');
}

</script>
</head>
<body>
<button onclick="requestdata()">Нажать</button>
</body>
</html>
...
Рейтинг: 0 / 0
03.03.2008, 15:40
    #35167329
xxx_G_M_S_xxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] AJAX + Mozilla FireFox - непонятный косяк
Ога, спс, прочитал, проникся.
...
Рейтинг: 0 / 0
03.03.2008, 18:49
    #35168021
apapacy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] AJAX + Mozilla FireFox - непонятный косяк
xxx_G_M_S_xxxРазобрался сам. Почему-то мазила отказывалась наотрез выполнять мой обработчик, сделал проще:

Это эелементарно, Уотсон.
Мозилка не выполняет синхронно onreadystatechange-функцию.
надо делать так

xhr.send()
// а тут прямо вызывайте Вашу функцию
myfunction.call(xhr, ...)
...
Рейтинг: 0 / 0
03.03.2008, 19:00
    #35168050
xxx_G_M_S_xxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] AJAX + Mozilla FireFox - непонятный косяк
apapacy
xhr.send()
// а тут прямо вызывайте Вашу функцию
myfunction.call(xhr, ...)Хе, пашет И на вид, по-мойму, правильнее Хотя нет... У меня ж в виде обработчика прикручено было (в Опере и Осле пахало!!!), а тут - явный вызов... Чем лучше того, что я тупо ручками вернул значение?
...
Рейтинг: 0 / 0
03.03.2008, 19:11
    #35168075
apapacy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] AJAX + Mozilla FireFox - непонятный косяк
Синхронный вызов на то и синхронный вызов, что происходит в потоке, как вызов обычной функции.
Обработчик не к чему тут
...
Рейтинг: 0 / 0
03.03.2008, 22:56
    #35168335
xxx_G_M_S_xxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[JS] AJAX + Mozilla FireFox - непонятный косяк
apapacyСинхронный вызов на то и синхронный вызов, что происходит в потоке, как вызов обычной функции.
Обработчик не к чему тутПока ни к чему... А вдруг понадобиццо? А у меня уже предусмотрено.
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / [JS] AJAX + Mozilla FireFox - непонятный косяк / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]