AJAX:使用jQuery的.ajax()而不是XMLHttpRequest的优势?

时间:2010-11-24 20:57:00

标签: javascript jquery ajax

使用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 个答案:

答案 0 :(得分:2)

您可能希望了解jQuery的src/ajax.js source code。其中720 sloc而不仅仅是10的一个原因主要是:

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

  • 提供额外的功能,例如通过相同的界面,事件挂钩等处理JSONP以及其他语法糖。

答案 1 :(得分:1)

除非您已经在网站的其他部分使用jQuery,否则我不确定是否值得重写。主要优点是使用jQuery更容易阅读代码,并且它会为您解决跨浏览器兼容性问题。

仅为AJAX使用jQuery可能不是最好的主意。

答案 2 :(得分:0)

作为JS和Jquery的新手,我可以说jQuery.Post(url);比以上容易阅读的百万次......: - )

答案 3 :(得分:0)

这实际上取决于您是否需要jquery ajax提供的其他功能。我倾向于将数据作为对象文字而不是字符串连接发送。我经常使用的一个功能是能够在响应html中评估脚本标记。 jQuery ajax非常好地处理这些事情。

如果您对代码感到满意,那么它就会坚持下去。我想你会发现很多地方(除了ajax)实现jQuery,如果你包含它。 :)

答案 4 :(得分:-2)

是的,并且goto的w / if语句可以执行while循环,for循环,列表推导或数组映射/ filter / reduce都能做到。