广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >jQuery中$.ajax()提供的回调钩子是什么
  • 968
分享到

jQuery中$.ajax()提供的回调钩子是什么

2024-04-02 19:04:59 968人浏览 八月长安
摘要

这篇文章主要介绍了Jquery中$.ajax()提供的回调钩子是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。   Callback

这篇文章主要介绍了Jquery中$.ajax()提供的回调钩子是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

  Callback Function Queues(回调函数)

  beforeSend, error, dataFilter, success 和 complete接受的回调函数是在合适的时间调用。

  从jQuery 1.5开始, fail , done ,和从jQuery 1.6开始的always回调钩子(hooks)采用先入先出队列管理。这意味着你可以为每个挂钩分配多个回调。见Deferred object methods ,这是实现内部的$.ajax()回调钩子(hooks)。

  这里有$.ajax()提供的回调钩子 (hooks),如下:

  beforeSend 在发送请求之前调用,它接收jqXHR对象和settings作为参数对象。

  error 在请求出错时调用。如果请求失败,在它们的顺序依次登记。他们接受jqXHR ,字符串表示的错误类型,以及异常对象(如果有的话)。一些内置的错误会将 "abort", "timeout", "No Transport" 等字符串作为异常对象。

  dataFilter 在请求成功之后调用。传入返回的数据以及dataType参数的值。并且必须返回新的数据(可能是处理过的)传递给success回调函数。

  success 当请求成功并接收到返回数据之后调用。传入返回后的数据,以及包含成功代码的字符串和jqXHR对象。

  complete 请求完成时,无论是在失败或成功,它们按顺序依次执行回调。他们收到jqXHR对象,以及一个包含成功或错误代码。

  Data Types(数据类型)

  $.ajax()函数依赖服务器提供的信息来处理返回的数据。如果服务器报告说返回的数据是XML,那么返回的结果就可以用普通的XML方法或者jQuery的选择器来遍历。如果见得到其他类型,比如html,则数据就以文本形式来对待。

  通过dataType选项还可以指定其他不同数据处理方式。除了单纯的xml,dataType还可以指定 html, JSON, jsonp, script, 或者 text。

  其中,text 和 xml类型返回的数据不会经过处理。无论是通过jqXHR对象的responseText或responseXML,这些数据仅仅是传递给处理程序的成功

  注意:我们必须确保网页服务器报告的MIME类型与我们选择的 dataType. 所匹配。比如说,XML的话,服务器端就必须声明 text/xml 或者 application/xml 来获得一致的结果。

  如果指定为 html类型,任何内嵌的javascript都会在HTML作为一个字符串返回之前执行。类似的,指定script类型的话,也会先执行服务器端生成JavaScript,然后再把脚本作为一个文本数据返回。

  如果指定为json类型,则会把获取到的数据作为一个JavaScript对象来解析,并且把构建好的对象作为结果返回。为了实现这个目的,他首先尝试使用jQuery.parseJSON()。如果浏览器不支持,则使用一个Function来constructor。畸形的JSON数据将抛出一个解析错误(查看json.org了解更多信息)。JSON数据是一种能很方便通过JavaScript解析的结构化数据。如果获取的数据文件存放在远程服务器上(域名不同,也就是跨域获取数据),则需要使用jsonp类型代替。

  jsonp类型会给请求的URL后面创建一个查询字符串参数 callback=? 。服务器端应当在JSON数据前加上回调函数名,以便完成一个有效的JSONP请求。如果要指定回调函数的参数名来取代默认的callback,可以通过设置$.ajax()的jsonp参数。

  注意:JSONP是JSON格式的扩展。他要求一些服务器端的代码来检测并处理查询字符串参数。更多信息可以参阅详细介绍了其使用的原帖.

  当数据被从远程服务器取回(这是唯一可能使用script 或者 jsonp数据类型),error回调和全局事件将永远不会被触发。

  注:如果指定了script或者jsonp类型,那么当从服务器接收到数据时,实际上是用了<script>标签而不是XMLHttpRequest对象。这种情况下,$.ajax()不再返回一个XMLHttpRequest对象,并且也不会传递事件处理函数,比如beforeSend。

  Sending Data to the Server(发送数据到服务器)

  默认情况下,Ajax请求使用GET方法。如果要使用POST方法,可以设定type参数值。这个选项也会影响 data 选项中的内容如何发送到服务器。POST数据将被发送到服务器使用UTF-8字符集,根据W3C XMLHttpRequest的标准。

  data选项既可以包含一个查询字符串,比如 key1=value1&key2=value2,也可以是一个映射,比如 {key1: 'value1', key2: 'value2'} 。如果使用了后者的形式,则数据再发送前会用jQuery.param() 将其转换成查询字符串。这个处理过程也可以通过设置processData选项为false来回避。如果我们希望发送一个XML对象给服务器时,这种处理可能并不合适。并且在这种情况下,我们也应当改变contentType 选项的值,用其他合适的MIME类型来取代默认的  application/x-www-fORM-urlencoded 。

  Advanced Options(高级选项)

  global选项用于阻止响应注册的回调函数,比如.ajaxSend(), .ajaxError(),以及类似的方法。这在有些时候很有用,比如发送的请求非常频繁且简短的时候,就可以在.ajaxSend()里禁用这个。跨域脚本和JSONP请求,全局选项自动设置为false。更多关于这些方法的详细信息,请参阅下面的内容。

  如果服务器需要HTTP认证,可以使用用户名和密码可以通过 username 和 passWord 选项来设置。

  Ajax请求是限时的,所以错误警告被捕获并处理后,可以用来提升用户体验。请求超时这个参数通常就保留其默认值,要不就通过$.ajaxSetup()来全局设定,很少为特定的请求重新设置timeout选项。

  默认情况下,请求总会被发出去,但浏览器有可能从他的缓存中调取数据。要禁止使用缓存的结果,可以设置cache参数为false。如果希望判断数据自从上次请求后没有更改过就报告出错的话,可以设置ifModified为true。

  scriptCharset允许给<script>标签的请求设定一个特定的字符集,用于script 或者 jsonp类似的数据。当脚本和页面字符集不同时,这特别好用。

  Ajax的第一个字母是“asynchronous”的开头字母,这意味着所有的操作都是并行的,完成的顺序没有前后关系。$.ajax()的async参数总是设置成true,这标志着在请求开始后,其他代码依然能够执行。强烈不建议把这个选项设置成false,这意味着所有的请求都不再是异步的了,这也会导致浏览器被死。

  $.ajax()函数返回他创建的XMLHttpRequest对象。通常jQuery只在内部处理并创建这个对象,但用户也可以通过xhr 选项来传递一个自己创建的xhr对象。返回的对象通常已经被丢弃了,但依然提供一个底层接口来观察和操控请求。比如说,调用对象上的.abort() 可以在请求完成前挂起请求。

  目前, 在Firefox中有一个bug,虽然.getResponseHeader('Content-Type')返回一个非空的字符串,但是 .getAllResponseHeaders()还是返回空字符串, 在Firefox中使用jQuery不支持自动解码JSON CORS 响应。

  重写jQuery.ajaxSettings.xhr 的一种解决方案,如下

  (function () {

  var _super = jQuery.ajaxSettings.xhr,

  xhrCorsHeaders = [ "Cache-Control", "Content-Language", "Content-Type", "Expires", "Last-Modified", "Pragma" ];

  jQuery.ajaxSettings.xhr = function () {

  var xhr = _super(),

  getAllResponseHeaders = xhr.getAllResponseHeaders;

  xhr.getAllResponseHeaders = function () {

  var allHeaders = "";

  try {

  allHeaders = getAllResponseHeaders.apply( xhr );

  if ( allHeaders ) {

  return allHeaders;

  }

  } catch ( e ) {

  }

  $.each( xhrCorsHeaders, function ( i, headerName ) {

  if ( xhr.getResponseHeader( headerName ) ) {

  allHeaders += headerName + ": " + xhr.getResponseHeader( headerName ) + "\n";

  }

  });

  return allHeaders;

  };

  return xhr;

  };

  })();

感谢你能够认真阅读完这篇文章,希望小编分享的“jQuery中$.ajax()提供的回调钩子是什么”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网JavaScript频道,更多相关知识等着你来学习!

--结束END--

本文标题: jQuery中$.ajax()提供的回调钩子是什么

本文链接: https://www.lsjlt.com/news/91658.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • jQuery中$.ajax()提供的回调钩子是什么
    这篇文章主要介绍了jQuery中$.ajax()提供的回调钩子是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。   Callback ...
    99+
    2022-10-19
  • jquery中ajax回调函数是什么
    这篇文章将为大家详细讲解有关jquery中ajax回调函数是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 回调函数有:1、beforeS...
    99+
    2022-10-19
  • jquery中什么是回调函数
    本教程操作环境:windows7系统、jquery3.6.1版本、Dell G3电脑。函数也是对象想弄明白回调函数,首先的清楚地明白函数的规则。在javascript中,函数是比较奇怪的,但它确确实实是对象。确切地说,函数是用Functio...
    99+
    2022-11-22
    jquery javascript
  • thinkphp框架中钩子的配置调用方法是什么
    这篇文章主要讲解了“thinkphp框架中钩子的配置调用方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“thinkphp框架中钩子的配置调用方法是什么”吧!thinkphp的钩子行为...
    99+
    2023-06-21
  • Vue提供的三种调试方式是什么
    这篇文章主要讲解了“Vue提供的三种调试方式是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue提供的三种调试方式是什么”吧!一、在 VS Code 中配置调试使用 Vue CLI 2...
    99+
    2023-06-26
  • Python中Hook钩子函数的作用是什么
    本篇文章为大家展示了Python中Hook钩子函数的作用是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1. 什么是Hook经常会听到钩子函数(hook function)这个概念,最近在看目标...
    99+
    2023-06-15
  • Vue中callHook钩子函数的作用是什么
    这期内容当中小编将会给大家带来有关Vue中callHook钩子函数的作用是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Vue实例在不同的生命周期阶段,都调用了cal...
    99+
    2022-10-19
  • jquery中ajax常用的方法是什么
    这篇文章主要介绍“jquery中ajax常用的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“jquery中ajax常用的方法是什么”文章能帮助大家解决问题...
    99+
    2022-10-19
  • Java中提供synchronized后还要提供Lock的原因是什么
    这篇文章主要介绍“Java中提供synchronized后还要提供Lock的原因是什么”,在日常操作中,相信很多人在Java中提供synchronized后还要提供Lock的原因是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作...
    99+
    2023-06-29
  • jQuery AJAX中readyState与status的区别是什么
    这篇文章给大家分享的是有关jQuery AJAX中readyState与status的区别是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。先看代码 这段代码构造一个XHR对象的实例request,并...
    99+
    2023-06-08
  • vue中的生命周期和钩子函数是什么
    这篇文章主要讲解了“vue中的生命周期和钩子函数是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue中的生命周期和钩子函数是什么”吧!1.什么是生命周期Vue 实例有一个完整的生命周期...
    99+
    2023-06-21
  • jquery中map返回使用的是什么
    这篇文章主要讲解了“jquery中map返回使用的是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“jquery中map返回使用的是什么”吧! ...
    99+
    2022-10-19
  • vue-router中的钩子函数和执行顺序是什么
    这篇文章主要讲解了“vue-router中的钩子函数和执行顺序是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue-router中的钩子函数和执行顺序是什么”吧!一:全局导航钩子函数1...
    99+
    2023-07-02
  • ajax请求返回的数据看不到回调函数的原因是什么
    本篇内容介绍了“ajax请求返回的数据看不到回调函数的原因是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所...
    99+
    2022-10-19
  • nodejs中回调的含义是什么
    这篇文章主要介绍“nodejs中回调的含义是什么”,在日常操作中,相信很多人在nodejs中回调的含义是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”nodejs中回调的...
    99+
    2022-10-19
  • Java中回调函数的作用是什么
    这期内容当中小编将会给大家带来有关Java中回调函数的作用是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。先定义一个接口,规定回答问题的条件是打我手机public interface&nbs...
    99+
    2023-06-17
  • JavaScript中异步与回调的基本概念及回调地狱现象是什么
    本文小编为大家详细介绍“JavaScript中异步与回调的基本概念及回调地狱现象是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“JavaScript中异步与回调的基本概念及回调地狱现象是什么”文章能帮...
    99+
    2022-10-19
  • JavaScript中的回调函数是什么及如何用
    今天小编给大家分享一下JavaScript中的回调函数是什么及如何用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.什么是...
    99+
    2023-07-04
  • JavaScript中异步与回调的基本概念是什么
    本篇内容介绍了“JavaScript中异步与回调的基本概念是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所...
    99+
    2022-10-19
  • JVM调优中垃圾回收面临的问题是什么
    这篇文章将为大家详细讲解有关JVM调优中垃圾回收面临的问题是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。如何区分垃圾上面说到的“引用计数”法,通过统计控制生成对象和删除对象时的引用数来...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作