Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / (AJAX) Разные результаты в браузерах, onreadystatechange / 15 сообщений из 15, страница 1 из 1
07.07.2008, 17:56
    #35415886
Berkut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(AJAX) Разные результаты в браузерах, onreadystatechange
Привет!

Код: 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.
function prepareRequest() {

    var http_request = false;

    if (window.XMLHttpRequest) { // Mozilla, Safari,...
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) {
            // See note below about this line
        }
    } else if (window.ActiveXObject) { // IE
        try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }
    if (!http_request) {
        alert('Ошибка при создании XMLHTTP'); return false;
    }
    return http_request;
}

function jsonMakeRequest(url) 
{
    http_request = prepareRequest();
    http_request.onreadystatechange = function() {  
        if (http_request.readyState ==  4 ) {
            if (http_request.status ==  200 ) {
                alert(http_request.responseText);
            } else {
                alert('There was a problem with the request.');
                http_request.responseText = '';
            }
        }
    }
    
    http_request.open('GET', url);
    http_request.send(null);
    alert('jsonMakeRequest');
    
    return http_request.responseText;
}

В Internet Explorer и Opera при вызове jsonMakeRequest() сначала выпадает 'jsonMakeRequest', а затем только ответ с сервера alert(http_request.responseText). В FireFox работает все отлично (сначала ответ alert(http_request.responseText), потом - alert('jsonMakeRequest')).
Как заставить функцию дождаться сначала ответа, а потом вернуть результат?

Заранее спасибо!

На скриншоте видно, что окно с сообщением 'jsonMakeRequest' неактивно, т.к. вызвано было раньше.
...
Рейтинг: 0 / 0
07.07.2008, 19:41
    #35416141
зы
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(AJAX) Разные результаты в браузерах, onreadystatechange
это п....ц, ты про синхронные-асинхронные запросы-то почитай
...
Рейтинг: 0 / 0
07.07.2008, 20:17
    #35416195
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(AJAX) Разные результаты в браузерах, onreadystatechange
Если данные в формате JSON. Нафига реквест-то?
...
Рейтинг: 0 / 0
07.07.2008, 20:18
    #35416198
Berkut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(AJAX) Разные результаты в браузерах, onreadystatechange
Спасибо!

Забыл, что у open() несколько параметров.

http://www-128.ibm.com/developerworks/ru/library/wa-ajaxintro2/
...
Рейтинг: 0 / 0
07.07.2008, 21:37
    #35416275
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(AJAX) Разные результаты в браузерах, onreadystatechange
Нахрена ссылка на ИБМ (без тебя знаем). Сделай всё по-человечески, тогда и давай тынцы.
...
Рейтинг: 0 / 0
07.07.2008, 22:39
    #35416315
зы
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(AJAX) Разные результаты в браузерах, onreadystatechange
ShSergeЕсли данные в формате JSON. Нафига реквест-то?
не понял мысль, а нафига вообще реквесты нужны?:)
...
Рейтинг: 0 / 0
08.07.2008, 09:31
    #35416637
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(AJAX) Разные результаты в браузерах, onreadystatechange
зы ShSergeЕсли данные в формате JSON. Нафига реквест-то?
не понял мысль, а нафига вообще реквесты нужны?:)
JSON легко превращяется в JSONP, который есть альтернативный вариант асинхронной загрузки (без реквеста).
Если данные возвращать не в виде строки "JSON_строка", а в виде "myCall(JSON_строка)".
Где нибудь хоть на кнопка клик:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
function knopkaClick(){
scr=document.createElement("SCRIPT");
scr.src="мой_любимый_УРЛ";
}
////////////////
function myCall(str){
//обработка ассоциативного массива str.
}
...
Рейтинг: 0 / 0
08.07.2008, 09:51
    #35416687
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(AJAX) Разные результаты в браузерах, onreadystatechange
Пардон, забыл в верхнем скрипте написать аппенд:
Код: plaintext
1.
2.
3.
4.
5.
function knopkaClick(){
scr=document.createElement("SCRIPT");
scr.src="мой_любимый_УРЛ";
document.body.appendChild(scr);
}
...
Рейтинг: 0 / 0
08.07.2008, 16:50
    #35418263
зы
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(AJAX) Разные результаты в браузерах, onreadystatechange
хм, и на сколько у меня разрастется документ, если я поработаю с таким сайтом, скажем, пол часа? херня это все, да и результат подгрузки ждать сложнее.
...
Рейтинг: 0 / 0
08.07.2008, 17:02
    #35418317
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(AJAX) Разные результаты в браузерах, onreadystatechange
зыхм, и на сколько у меня разрастется документ, если я поработаю с таким сайтом, скажем, пол часа? херня это все, да и результат подгрузки ждать сложнее.
Не разрастётся абсолютно (одно другое замещает). А про результат загрузки - я уже где-то на форуме приводил пример в несколько мегабайтов, реквест не хотел работать, а у меня всё ок.
...
Рейтинг: 0 / 0
08.07.2008, 19:14
    #35418709
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(AJAX) Разные результаты в браузерах, onreadystatechange
Согласен с тем, что идея имеет полное право на жизнь.
Но, во-первых, если будет проблема отправки-приема и это учитывать, то, пожалуй, имея такой (почти ненужный и бестолковый) параметр как readyState, можно проанализировать ошибку и все же выдать сообщение ... хотя бы. При jsonp мы лишены такого "счастья".
Во-вторых, способ не универсальный, так как реакцию на получение мы прописываем уже на сервере, тогда как бывают запросы, которые используются в разных местах и используют полученную информацию по-разному, а делать разветвления на сервере и вгонять какой-то список в жесткие рамки неудобно, нерационально и неправильно.

Поэтому, повторюсь, способ сам по себе и для использования в нужных для этого местах, мне лично очень понравился - сам раньше как-то не задумывался над ним, но панацеей или заменой реквесту не считаю. Все же технология есть технология ...
...
Рейтинг: 0 / 0
08.07.2008, 20:16
    #35418775
зы
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(AJAX) Разные результаты в браузерах, onreadystatechange
ну и в-третьих, GET запросы - зло :)

кстати не понял где там что замещает... или ты код не тот запостил, или что-то фантазируешь
...
Рейтинг: 0 / 0
08.07.2008, 21:43
    #35418866
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(AJAX) Разные результаты в браузерах, onreadystatechange
зы , ёлки-палки, задолбался рекламировать технологию. Неужели не понятно. Проспитесь. Весь гугель на этом построен. Ну, и чего ты сделаешь со своим долбаным сервисом на реквесте (нельзя на другой домен полезть)?
...
Рейтинг: 0 / 0
08.07.2008, 22:06
    #35418896
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(AJAX) Разные результаты в браузерах, onreadystatechange
Короче, переходим. Ёлки-палки, скоко рекламировать нужно. Гуглы - перешли, а вы - репу чешете (типа, а хрен его знает?). У них вся технология на энтом построена. Включаешь у себя их скрипт - работает. Может кто другую кроссдоменную технологию знает (реквест - не потянет)?
Та же карта (гугл еартх), твоють!
...
Рейтинг: 0 / 0
11.07.2008, 11:15
    #35424876
зы
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(AJAX) Разные результаты в браузерах, onreadystatechange
а автор что, просил кросс-доменные запросы реализовать?
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / (AJAX) Разные результаты в браузерах, onreadystatechange / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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