Сделайте вызов YUI asyncRequest, который не является асинхронным - PullRequest
0 голосов
/ 11 января 2010

Я хочу сделать вызов YAHOO.util.Connect.asyncRequest, который не является асинхронным. Точно так же, как open (метод, URL, асинхронный) , где ложь передается асинхронным.

Я не могу найти "syncRequest" в классе Connect. Возможно ли это с помощью YUI 2?

Я пытался без YUI вместо:

function createRequestObject() {
    var ro;
    // Mozilla, Safari,...
    if (window.XMLHttpRequest) {
        ro = new XMLHttpRequest();
        if (ro.overrideMimeType) {
            ro.overrideMimeType('text/xml');
            // See note below about this line
        }
        // IE
    } else if (window.ActiveXObject) {
        try {
            ro = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                ro = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }
    if (!ro) {
        alert('Giving up :( Cannot create an XMLHTTP instance');
        return false;
    }
    return ro;
}
function sndReq(param,server,handler) {
    http = createRequestObject();
    http.open('GET', server+"?"+param, false);
    http.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    http.onreadystatechange = handler;
    http.send(null);
}

Но в FireFox и Safari функция обратного вызова (обработчик) не вызывается для onreadystatechange, когда false передается в open? В IE и Opera все работает нормально.

Ответы [ 4 ]

2 голосов
/ 11 января 2010

YUI3 поддерживает синхронные запросы в "YUI io" и доступен на мастере разработки на GitHub. Синтаксис реализации включен в файл README и будет официально задокументирован для выпуска в 3.1.0. Это усовершенствование задокументировано как 2528181 на yuilibrary.com.

Если вы можете использовать YUI 3, попробуйте.

1 голос
/ 18 февраля 2010

Используйте JQuery. jQuery.ajax ({async: false}) работает как в IE, так и в FF.

1 голос
/ 11 января 2010

YUI2 не поддерживает синхронные запросы. По словам одного из разработчиков IRC, в конечном итоге он станет частью YUI3. Они не спешат его поддерживать, хотя из-за хаоса, который он играет с пользовательским интерфейсом.

0 голосов
/ 14 февраля 2012

Лично я бы никогда не сделал запрос синхронизации. AJAX для асинхронных запросов. Если запрос занимает больше времени, пользовательский интерфейс будет зависать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...