簡體   English   中英

AJAX:使用jQuery的.ajax()代替XMLHttpRequest的優勢?

[英]AJAX: advantages to using jQuery's .ajax() instead of XMLHttpRequest?

與下面顯示的AJAX函數類型相比,使用jQuery AJAX函數有什么真正的優勢? 顯然,語法更簡潔/更短-但是有什么明顯的區別可以證明重寫我現有的Ajax代碼嗎?

var ajax = getXmlObject();
var url= '/addPartToCart.php?m=' + encodeURIComponent(m) + 
         '&q=' + qty + 
         '&refresh=' + randomString();

if (ajax.readyState == 4 || ajax.readyState == 0) {
    ajax.open("POST", url, true);
    ajax.onreadystatechange = function (){
        if (ajax.readyState == 4) {    

        }
    }; 
    ajax.send(null);
} 

function getXmlObject() {
    if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
    } else if(window.ActiveXObject) {
        return new ActiveXObject("Microsoft.XMLHTTP");
    } else {
        //error
    }
}

UPDATE

我已經對所有AJAX函數進行了重新編程,以使用jQuery的.ajax() 我必須說,我已經看到速度和可靠性方面的顯着改善。

您可能想看看jQuery的src / ajax.js源代碼 它是720 sloc而不是10的一個原因的主要原因是:

  • 修復並包裝不同瀏覽器之間的已知不一致。 評論將揭示許多這些問題。

  • 提供額外的功能,例如通過相同的接口處理JSONP,事件掛鈎等。以及其他語法糖。

我不確定是否值得重寫,除非您已經在網站的其他部分使用了jQuery。 主要優點是使用jQuery可以輕松閱讀代碼,並且可以為您解決跨瀏覽器的兼容性問題。

但是,僅將jQuery用於AJAX可能不是最好的主意。

作為JS和Jquery的新手,我可以說jQuery.Post(url); 比上面更容易閱讀一百萬倍... :-)

這實際上取決於您是否需要jquery ajax提供的其他功能。 我傾向於將數據作為對象文字而不是字符串concats發送。 我經常使用的一項功能是能夠評估響應HTML中的腳本標簽。 jQuery ajax很好地處理了這些事情。

如果您對代碼感到滿意,那就堅持吧。 我認為,如果包含jQuery,您會發現很多地方(除了ajax之外)都可以實現jQuery。 :)

是的,goto的w / if語句可以在while循環中進行所有操作,for循環,列表理解或數組map / filter / reduce可以進行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM