Jquery关于ajax有一系列的方法函数,单单知道$.ajax()显然是不够的,接下来我们对该系列的方法函数逐一研究下。

ajaxComplete(callback)、ajaxError(callback)、ajaxSend(callback)、ajaxStart(callback)、ajaxStop(callback)、ajaxSuccess(callback)

把这一套方法归到一起说,因为他们实现的功能相近,方法本身也并不复杂。

他们的作用是,为 ajax 指定全局事件的回调函数,回调函数的参数与对应事件相关。

下面是对应关系

方法 执行时段 回调函数的参数 执行顺序
ajaxComplete(callback) 请求完成后 event, xhr, settings 4
ajaxError(callback) 请求失败时 event, xhr, settings, statusText 3
ajaxSend(callback) 请求发送前 event, xhr, settings 2
ajaxStart(callback) 请求开始时 event 1
ajaxStop(callback) 请求结束时 event 5
ajaxSuccess(callback) 请求成功时 event, xhr, settings, data 3

如果不是特殊需求,我们都应该将这一系列全局事件处理函数绑定到document对象上:(Jquery1.8版本以上,必须绑定到document对象上才能生效)

$(document).ajaxStart(function(){
...
});

$.ajax() 方法的 global 设置可以控制是否触发这些全局事件回调,默认是true。如果不想触发全局事件回调,请将 global 设置成 false。

$.get(url, [data], [callback], [type])、$.post(url, [data], [callback], [type])

这两个方法其实是对 $.ajax() 方法的再封装,将 method 默认设成 get/post。然后4个参数分别对应 $.ajax() 设置中的 url,data,success,dataType。返回值和 $.ajax() 方法一模一样。

$.getJSON(url, [data], [callback])、$.getScript(url, [data], [callback])

这两个方法其实是对 $.get() 方法的再封装,也就是对 $.ajax() 的二次再封装,将 method  默认设成 get, dataType 默认设成 json/script。然后4个参数分别对应 $.ajax() 设置中的 url,data,success。返回值和 $.ajax() 方法一模一样。

这里补充说明一下的就是,虽然 $.getJSON() 方法通过在url拼加参数的方式,也可以实现 jsonp 请求,但这种做法不推荐就是了。

load(url, [data], [callback])

载入远程 HTML 文件代码并插入至 DOM 中。三个参数分别对应:待装入 HTML 内容网址,发送至服务器的数据,载入成功时回调函数

//加载 feeds.html 文件内容到 id 为 feeds 的容器中。
$("#feeds").load("feeds.html");

默认使用 GET 方式 - 传递附加参数时自动转换为 POST 方式。

//功能同上面的例子,但由于传递了附加参数,改用 post 形式发送请求
$("#feeds").load("feeds.php", {limit: 25}, function(){
alert("The last 25 entries in the feed have been loaded");
});

Jquery1.2以上版本,可以指定选择符,来筛选载入的 HTML 文档,DOM 中将仅插入筛选出的 HTML 代码。语法形如 "url #some > selector"。

//下面的代码会根据选择器,对加载到的内容进行筛选后再插入到 DOM 中
$("#links").load("/Main_Page #p-Getting-Started li");

$.ajaxSetup(settings)

设置全局 AJAX 默认选项。具体参数可参照 $.ajax()。设置全局默认选项后,所有 ajax 系列方法发出的请求在没有重新对 settings 设置的情况下,都会使用 $.ajaxSetup() 方法设定的默认值。

当然,就算未经过 $.ajaxSetup() 方法的设置,本身 settings 对象各个属性也是有默认值的, $.ajaxSetup()方法的作用仅仅是重新设定这些默认值而已。

$.ajaxPrefilter([dataTypes], handler(settings, originalSettings, jqXHR))

这个方法用于定义 ajax 请求预处理器,指定特性类型的请求,在请求发出前的处理函数。

dataTypes 参数为可选参数,类型为 string,可以指定对应 datatype 的请求才执行预处理函数。支持指定多种类型,不同的 datatype 以空格符隔开。

handler 参数为必选参数,类型为 function,它就是在请求发出前的处理函数。它包含3个参数:

settings —— ajax 请求的设置选项对象,除了既包含了调用 $.ajax() 方法传入的 settings,也包含其他默认设置属性

originalSettings —— 调用 $.ajax() 方法传入的 settings 参数对象

jqXHR —— 请求的jqXHR对象

//下面的代码定义了一个AJAX预处理器
//作用是,根据用户的自定义属性 abortOnRetry 来对请求进行检测,检测当前正在等待响应的请求中,是否有与本次相同的请求,如果有,则把尚未响应的请求给取消掉 var currentRequests = {}; $.ajaxPrefilter(function (settings, originalSettings, jqXHR) {
if (settings.abortOnRetry) {
if (currentRequests[settings.url]) {
currentRequests[settings.url].abort();
}
currentRequests[settings.url] = jqXHR;
}
});

我们也可以用 $.ajaxPrefilter() 方法来修改 settings 选项

$.ajaxPrefilter(function(settings, originalSettings, jqXHR) {
settings.method = 'post';
});

通过 dataTypes 参数指定某些类型的 ajax 请求才执行预处理函数

//下面的预处理器仅对 dataType 为 json 和 script 的请求适用
$.ajaxPrefilter("json script", function(settings, originalSettings, jqXHR) {
...
});

$.ajaxPrefilter() 方法也可以将请求重定向到另一个数据类型,并且返回该数据类型。例如,如果 URL 中含有在 isActuallyScript() 函数中设定的指定属性,那么设置成一个“script”的请求:

$.ajaxPrefilter(function (settings) {
if (isActuallyScript(settings.url)) {
return "script";
}
});

这将确保请求被认为是“script”类型的,而且也保证了所有对 script 数据类型有效的预前过滤器,也将被应用到它。

Jquery中和ajax有关的方法的更多相关文章

  1. jquery中ajax中post方法(多学习:洞悉原理,触类旁通)(函数封装思想)

    jquery中ajax中post方法(多学习:洞悉原理,触类旁通)(函数封装思想) 一.总结 1.多看学习视频:洞悉原理,触类旁通, 2.函数封装:$.post(URL,data,callback); ...

  2. jquery之ajax之$.get方法的使用

    jquery对ajax进行了封装,非常方便. 自己用$.get()方法写了个小demo,包括客户端和服务端. 客户端: <!DOCTYPE html> <html> <h ...

  3. Asp.net中JQuery、ajax调用后台方法总结

    通过上一篇文章实例的实现,整个过程当中学习到很多知识点,了解了Jquery.Ajax在asp.net中的运用,加以总结,其实原理都是一样的,理解了一种,其他的注意很少的区别就可以了.灵活运用: 1.有 ...

  4. jQuery的ajax()、post()方法提交数组,参数[] 问题

    当用$.ajax()向后台提交参数时,如果参数中数组的话一般在后台会用List,或Integer[] 等数组对象进行接收. 比如: $.ajax({   type: "POST", ...

  5. JQuery的Ajax使用Get,Post方法调用C#WebService并返回数据

    本文将介绍jQuery调用基于.NET Framework 3.5的WebService返回JSON数据,另外还要介绍一下用jQuery调用WebService的参数设置及设置不当所出现的问题,还有出 ...

  6. JQuery 的Ajax的使用

    JSON:一种轻量级的数据表示方法,优点:传输方便,占用字节少 XML:一种偏重量级的数据表示方法,优点:格式清晰,占用字节多,大量的字节都浪费在了标签上: 网络传输我们常使用json,因为浏览器解析 ...

  7. 从零开始学习jQuery (六) AJAX快餐

    一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案,  即使你会使用jQuery也能在阅读中发现些许秘籍. 本篇文章讲解如何使用jQuery方便快捷的实现A ...

  8. 【JAVAWEB学习笔记】28_jqueryAjax:json数据结构、jquery的ajax操作和表单校验插件

    Ajax-jqueryAjax 今天内容: 1.json数据结构(重点) 2.jquery的ajax操作(重点) 3.jquery的插件使用   一.json数据结构 1.什么是json JSON(J ...

  9. jquery的ajax全局事件详解

        jquery在ajax方面是非常强大和方便的,以下是jquery进行ajax请求时方法模板: $.ajax({ type: "get", url: "" ...

随机推荐

  1. Android-广播发送与接收(Java代码中订阅)

    Android四大组件之一广播,使用的也比较多,广播可大致分为两种,一种是Android系统区域的广播,是由系统指令发出,例如:点亮屏幕广播,开机过程中的一些广播 省略…, 然而还有一种广播就是我们自 ...

  2. rabbitmqBat常用指令

    激活 RabbitMQ's Management Pluginrabbitmq-plugins.bat enable rabbitmq_management 查看已有用户及用户的角色rabbitmqc ...

  3. [Erlang03]Erlang有哪些好用的静态分析工具?

    1. dialyzer Dialyzer starts its analysis from either debug-compiled BEAM bytecode or from Erlang sou ...

  4. Nutch2.2.1 爬虫问题列表

    http://www.cnblogs.com/cy163/archive/2013/02/14/2912630.html http://blog.csdn.net/wangzhaodong001/ar ...

  5. 如何执行oracle存储过程,就exec一下?

    不单单是exec一下,还是得分情况: 1.如果是命令窗口就用exec 存储过程名,举个栗子: EXEC procedure;--procedure是存储过程名 2.如果是PL/SQL窗口就用 begi ...

  6. ASP.NET MVC中的控制器激活与反射之间的联系(帮助理解)

    ASP.NET Mvc是ASP.NET的一个框架,同样也是基于管道的设计结构.HttpModule和HttpHandler是ASP.NET的两个重要组件,同样的在Mvc中也是非常重要的组件.在应用程序 ...

  7. django LookUp

    Custom Lookups 一个简单LookUp例子 Author.objects.filter(name__ne='Jack') # Translate SQL "author" ...

  8. Javascript获取select的选中值和选中文本(转载)

    var obj = document.getElementById(”select_id”); //selectid var index = obj.selectedIndex; // 选中索引 va ...

  9. “全栈2019”Java第三十四章:可变参数列表

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  10. 性能分析工具VisualVM for eclipse安装过程总结

    Java VisualVM Java VisualVM is a tool that provides a visual interface for viewing detailed informat ...