jQuery.ajax()

ajax底层通过XMLHttpRequest实现,jQuery对其做了封装,基本的封装是ajax()方法,高层的封装有jQuery.get(), jQuery.post(), .load()等方法。

jQuery.ajax()用法示例:

$.ajax({
    type : "POST",  
    async:false,
    url : "${pageContext.request.contextPath}/user/queryColumnNamesByColumnIds.do",
    data:{columnJson:columnJson.join('-')},
    dataType: "json",  
    success : function(data) {
        var json = eval("("+data+")");
        for(var key in json)
        {
            $("#"+key).text(json[key]);
            $("#"+key).attr("title",json[key]);
        }
    }
});

jQuery.ajax()包含了ajax请求的所有基本的内容,其它的一些方法只是针对特定的一些用法(比如jQuery.post()、jQuery.getJSON())又进行了封装,其实质与jQuery.ajax()并无差别,直接用jQuery.ajax()能够完成任何其它封装方法的功能。

我的最佳实践:任何情况下,只使用jQuery.ajax()。至于其它的方法,认识,知道与jQuery.ajax()的对应关系即可。

这里是W3School网站给出的jQuery所有与ajax相关的方法的地址,供参考。

其中用jQuery调用的方法(如jQuery.ajax())是独立的方法,其它的如(.ajaxComplete())必须与页面元素结合使用,简单说下结合页面元素使用的方法。

 $(document).ajaxComplete(function(){
    alert(11);
  });
  $("#txt").ajaxComplete(function(){
    alert(this.value);
  });

可以给多个元素注册.ajaxComplete,ajax请求完成时,所有注册的ajaxComplete方法都将被执行,与注册在哪个元素上是没有关系,唯一的关系大概是在注册的function中能够用this拿到当前元素吧。

其中 jQuery中各个事件执行顺序如下(道听途说):
.ajaxStart(全局事件)
.beforeSend
.ajaxSend(全局事件)
.success
.ajaxSuccess(全局事件)
.error
.ajaxError (全局事件)
.complete
.ajaxComplete(全局事件)
.ajaxStop(全局事件)

其中.error .complete方法用法如下:

$.ajax({
        ...
    }).complete(function() {
        ...
    }).error(function() {
        ...
    });

与.ajaxComplete不同
推测 上面所说的全局事件用法同.ajaxComplete一致,而其它方法则是属于上面这种用法。

你可能感兴趣的:(Ajax)