Технология AJAX и её эволюция

JavaScript AJAX W3C HMLHttpRequest

Многие вэб-программисты часто сталкиваются с проблемой AJAX-запроса: стандарт технологии XMLHttpRequest говорит о том, что при создании такового управление скриптом передается обратно браузеру и для работы с ответом на запрос нужно обращаться к внешней функции.
Это очень логично, если ссылаться на неизвестное время ожидания ответа сервера.
Этот момент не всегда удобен, так как нужно писать дополнительные функции, создавать переходы и т.д., в то время, как с сервера нужна получить всего лишь одну строку, или число.
В наше время все чаще возникают ситуации, когда функция зависит именно от этого ответа.
Вопрос. Собираются ли ребята из W3C переписывать стандарт и дать запрашивающей функции возможность дожидаться ответа?

Примечание:
Xobrt - стоит ознакомиться со стандартом. Мало того, что код функции не дожидается возврата ответа и исполняется дальше, но и при ответе возвращается значение undefined вызывающему средству и ответ передается только функции-руководителю (handler), которую надо передать как аттрибут запроса, или создать такую по умолчанию.

Примечание:
hedint - асинхронность, несомненно, плюс, когда она нужна.
Так я совершаю запрос на данный момент:
function a( txt ){
if( !txt ) return Ajax.request( data , url , async , a );
return txt;
}
Если мне нужно следующее:
function a( foo , bar ){
var txt = Ajax.request( data , url , async );
return foo + txt + bar;
}
Это невозможно решить так, как указано. Нужно писать метод, который обработает ответ AJAX-а.
Синхронность, или асинхроннсть здесь роли не играют.

Примечание:
Спасибо всем за такое количество внимания. Вопрос даже не в том, может ли браузер дождаться ответа, или побежит дальше, а в том, что для обработки этого ответа нужна внешняя функция. Мое второе примечание поясняет желательный принцип работы. Я говорю о системе, в которой даже в установленном в "истина" флагом асинхронности ответа дожидается и прекращает свое исполнение только вызывающая функция. Вопрос состоял в том, знает ли кто-нибудь, будет ли это частью новых стандартов W3C. Спасибо за ответы =)
Ответы:
Разве запрашивающая функция не дожидается ответа? Достаточно проверять код возврата и среагировать на значение 4 - это будет соответствовать окончанию ответа сервера.
На странице
http://ru.wikipedia.org/wiki/XMLHttpRequest
внизу есть пример применения, там как-раз над строкой где проверяется равенство кода 4, написано "важно". По-моему это то, что вам нужно.
Стандарт я, конечно, не читал, но я работаю с AJAX каждый день)
во-первых, асинхронность - это плюс, а не минус. интерфейс остается отзывчивым, пока выполняется запрос.
во-вторых - есть callback функция по результатам запроса.
в третьих, можно сделать запрос синхронным (но тогда подвиснет весь ваш интерфейс на время запроса-ответа)
Лень тестировать, но синхронный запрос в данном случае должен отрабатывать так, как ожидается.
Асинхронный, да, споткнется, но можно написать callback, который будет менять глобальную переменную (если ответ нужен для идентификации состояния/каких-то действий дальше) или html.
Примечание №1
Всё, я понял о чём вы. Это тоже есть.
Поставьте третьим параметром ("флаг ассинхронности") в значение "ложь":
req.open("GET", url, false);
Тогда функция дождётся ответа.
Не знаю, не слыхал о таком. Вряд ли будет.
По моему скромному мнению для создания такого функционала мало причин, поскольку код можно выстроить так, что он будет делать нужную работу теми методами, что уже имеются на данный момент.


12 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.