jQuery Ajax внутри XUL или mozBackgroundRequest? - PullRequest
0 голосов
/ 12 ноября 2011

На самом деле у меня есть 2 вопроса: следующие 2 фрагмента кода работают без проблем;

Первый фрагмент - это jQuery ajax-запрос. Даже если это междоменный запрос, он работает. Мой первый вопрос: что случилось с той же политикой происхождения, почему это работает?

var jsLoader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"].
                getService(Components.interfaces.mozIJSSubScriptLoader);

    jsLoader.loadSubScript("chrome://yuceel/content/jquery-1.6.2.js");

    jQuery.noConflict();

    jQuery.post("http://example.com/xMessages/index.php/main/ajax_get_something",
    { "p1":"parameter1","p2":"parameter2"},
    function(data){
        alert(data);
    });

Второй фрагмент XMLHttpRequest. Я использовал это до сих пор, но мне интересно, какой из них имеет больше производительности? Мое приложение будет выполнять запросы каждые 3 секунды для небольшого текстового содержимого. Стоит ли мне вместо этого использовать jQuery Ajax?

postRequest:function(url, params, onload, onerror){
        var xhr = null;
        try {
            xhr = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance();
            xhr.mozBackgroundRequest = true;
            xhr.onload = function(event) {onload(xhr);}
            xhr.onerror = function(event) {onerror(xhr);}
            xhr.open('POST', url, false);
            xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
            xhr.send(Server.urlencode(params));
        } catch (e) {
            onerror(xhr);
        }
        return xhr;
}

1 Ответ

1 голос
/ 13 ноября 2011

Не существует политики одного и того же происхождения для надстроек - они имеют системные привилегии и могут использовать все что угодно.

jQuery.post() не волшебство, это просто оболочка вокруг XMLHttpRequest.Таким образом, он будет делать почти то же самое, что вы делаете с XMLHttpRequest, поэтому производительность практически одинакова.Единственное отличие - mozBackgroundRequest, но это просто предотвращает диалоги безопасности - ничего общего с производительностью.

...