代码之家  ›  专栏  ›  技术社区  ›  Dutchie432

Ajax:使用jquery的.ajax()而不是xmlhttpRequest的优势?

  •  2
  • Dutchie432  · 技术社区  · 15 年前

    使用jquery ajax函数比使用下面所示的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
        }
    }
    

    更新

    我已经将所有Ajax函数重新编程为使用jquery的 .ajax() . 我必须说,我已经看到了速度和可靠性的显著提高。

    5 回复  |  直到 15 年前
        1
  •  2
  •   Daniel Vassallo    15 年前

    您可能想看看jquery的 src/ajax.js source code . 一个原因是720 sloc 而不仅仅是10个主要是为了:

    • 修复并包装不同浏览器之间的已知不一致。这些评论将揭示其中许多问题。

    • 提供额外的特性,比如通过相同的接口处理JSONP、事件挂钩等,以及其他语法上的优势。

        2
  •  1
  •   simshaun    15 年前

    我不确定是否值得重写,除非你已经在网站的其他部分使用jquery。主要的优点是使用jquery可以更容易地读取代码,并且它可以为您处理跨浏览器的兼容性问题。

    不过,将jquery单独用于Ajax可能不是最好的主意。

        3
  •  0
  •   Exitos    15 年前

    作为JS和jquery的新手,我可以说jquery.post(url);比上面的……:-)更容易阅读。

        4
  •  0
  •   Josiah Ruddell    15 年前

    这实际上取决于您是否需要jQueryAjax提供的附加功能。我倾向于将数据作为对象文本而不是字符串concats发送。另外,我经常使用的一个特性是能够评估响应HTML中的脚本标记。jQueryAjax可以很好地处理这些问题。

    如果你对代码满意,那么就坚持下去。我认为如果包含jquery,您会发现许多地方(除了ajax)来实现它。:)

        5
  •  -2
  •   jon_darkstar    15 年前

    是的,goto的w/if语句可以在while循环中执行所有操作,for循环、列表理解或数组映射/过滤器/reduce都可以执行。