JQuery ajax使用方式小结

jQuery 底层 AJAX 实现。简单易用的高层实现见 $.get, $.post 等。$.ajax() 返回其创建的 XMLHttpRequest 对象。大多数情况下你无需直接操作该函数,除非你需要操作不常用的选项,以获得更多的灵活性。

最简单的情况下,$.ajax()可以不带任何参数直接使用。

注意,所有的选项都可以通过$.ajaxSetup()函数来全局设置。

回调函数

如果要处理$.ajax()得到的数据,则需要使用回调函数。beforeSend、error、dataFilter、success、complete。


beforeSend 在发送请求之前调用,并且传入一个XMLHttpRequest作为参数。
error 在请求出错时调用。传入XMLHttpRequest对象,描述错误类型的字符串以及一个异常对象(如果有的话)
dataFilter 在请求成功之后调用。传入返回的数据以及"dataType"参数的值。并且必须返回新的数据(可能是处理过的)传递给success回调函数。
success 当请求之后调用。传入返回后的数据,以及包含成功代码的字符串。
complete 当请求完成之后调用这个函数,无论成功或失败。传入XMLHttpRequest对象,以及一个包含成功或错误代码的字符串。

数据类型

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

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

其中,text和xml类型返回的数据不会经过处理。数据仅仅简单的将XMLHttpRequest的responseText或responseHTML属性传递给success回调函数,

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

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

如果指定为json类型,则会把获取到的数据作为一个JavaScript对象来解析,并且把构建好的对象作为结果返回。为了实现这个目的,他首先尝试使用JSON.parse()。如果浏览器不支持,则使用一个函数来构建。JSON数据是一种能很方便通过JavaScript解析的结构化数据。如果获取的数据文件存放在远程服务器上(域名不同,也就是跨域获取数据),则需要使用jsonp类型。使用这种类型的话,会创建一个查询字符串参数 callback=? ,这个参数会加在请求的URL后面。服务器端应当在JSON数据前加上回调函数名,以便完成一个有效的JSONP请求。如果要指定回调函数的参数名来取代默认的callback,可以通过设置$.ajax()的jsonp参数。

注意,JSONP是JSON格式的扩展。他要求一些服务器端的代码来检测并处理查询字符串参数。更多信息可以参阅 最初的文章。

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

发送数据到服务器

默认情况下,Ajax请求使用GET方法。如果要使用POST方法,可以设定type参数值。这个选项也会影响data选项中的内容如何发送到服务器。

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

高级选项

global选项用于阻止响应注册的回调函数,比如.ajaxSend,或者ajaxError,以及类似的方法。这在有些时候很有用,比如发送的请求非常频繁且简短的时候,就可以在ajaxSend里禁用这个。更多关于这些方法的详细信息,请参阅下面的内容。

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

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

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

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

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

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

参数
options (可选)ObjectAJAX 请求设置。所有选项都是可选的。

选项
asyncBoolean(默认: true) 默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false。注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。

beforeSend(XHR)Function发送请求前可修改 XMLHttpRequest 对象的函数,如添加自定义 HTTP 头。XMLHttpRequest 对象是唯一的参数。这是一个 Ajax 事件。如果返回false可以取消本次ajax请求。

function (XMLHttpRequest) {
this; // 调用本次AJAX请求时传递的options参数
}
cacheBoolean(默认: true,dataType为script和jsonp时默认为false) jQuery 1.2 新功能,设置为 false 将不缓存此页面。

complete(XHR, TS)Function请求完成后回调函数 (请求成功或失败之后均调用)。参数: XMLHttpRequest 对象和一个描述成功请求类型的字符串。 Ajax 事件。

function (XMLHttpRequest, textStatus) {
this; // 调用本次AJAX请求时传递的options参数
}
contentTypeString(默认: "application/x-www-form-urlencoded") 发送信息至服务器时内容编码类型。默认值适合大多数情况。如果你明确地传递了一个content-type给 $.ajax() 那么他必定会发送给服务器(即使没有数据要发送)

contextObject这个对象用于设置Ajax相关回调函数的上下文。也就是说,让回调函数内this指向这个对象(如果不设定这个参数,那么this就指向调用本次AJAX请求时传递的options参数)。比如指定一个DOM元素作为context参数,这样就设置了success回调函数的上下文为这个DOM元素。就像这样:

$.ajax({ url: "test.html", context: document.body, success: function(){
$(this).addClass("done");
}});
dataObject,String发送到服务器的数据。将自动转换为请求字符串格式。GET 请求中将附加在 URL 后。查看 processData 选项说明以禁止此自动转换。必须为 Key/Value 格式。如果为数组,jQuery 将自动为不同值对应同一个名称。如 {foo:["bar1", "bar2"]} 转换为 '&foo=bar1&foo=bar2'。

dataFilterFunction给Ajax返回的原始数据的进行预处理的函数。提供data和type两个参数:data是Ajax返回的原始数据,type是调用jQuery.ajax时提供的dataType参数。函数返回的值将由jQuery进一步处理。

function (data, type) {
// 对Ajax返回的原始数据进行预处理
return data // 返回处理后的数据
}
dataTypeString
预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如XML MIME类型就被识别为XML。在1.4中,JSON就会生成一个JavaScript对象,而script则会执行这个脚本。随后服务器端返回的数据会根据这个值解析后,传递给回调函数。可用值:

"xml": 返回 XML 文档,可用 jQuery 处理。

"html": 返回纯文本 HTML 信息;包含的script标签会在插入dom时执行。

"script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了"cache"参数。'''注意:'''在远程请求时(不在同一个域下),所有POST请求都将转为GET请求。(因为将使用DOM的script标签来加载)

"json": 返回 JSON 数据 。

"jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。

"text": 返回纯文本字符串


errorFunction(默认: 自动判断 (xml 或 html)) 请求失败时调用此函数。有以下三个参数:XMLHttpRequest 对象、错误信息、(可选)捕获的异常对象。如果发生了错误,错误信息(第二个参数)除了得到null之外,还可能是"timeout", "error", "notmodified" 和 "parsererror"。Ajax 事件。

function (XMLHttpRequest, textStatus, errorThrown) {
// 通常 textStatus 和 errorThrown 之中
// 只有一个会包含信息
this; // 调用本次AJAX请求时传递的options参数
}
globalBoolean(默认: true) 是否触发全局 AJAX 事件。设置为 false 将不会触发全局 AJAX 事件,如 ajaxStart 或 ajaxStop 可用于控制不同的 Ajax 事件。

ifModifiedBoolean(默认: false) 仅在服务器数据改变时获取新数据。使用 HTTP 包 Last-Modified 头信息判断。在jQuery 1.4中,他也会检查服务器指定的'etag'来确定数据没有被修改过。

jsonpString在一个jsonp请求中重写回调函数的名字。这个值用来替代在"callback=?"这种GET或POST请求中URL参数里的"callback"部分,比如{jsonp:'onJsonPLoad'}会导致将"onJsonPLoad=?"传给服务器。

jsonpCallbackString为jsonp请求指定一个回调函数名。这个值将用来取代jQuery自动生成的随机函数名。这主要用来让jQuery生成度独特的函数名,这样管理请求更容易,也能方便地提供回调函数和错误处理。你也可以在想让浏览器缓存GET请求的时候,指定这个回调函数名。

passwordString用于响应HTTP访问认证请求的密码

processDataBoolean(默认: true) 默认情况下,通过data选项传递进来的数据,如果是一个对象(技术上讲只要不是字符串),都会处理转化成一个查询字符串,以配合默认内容类型 "application/x-www-form-urlencoded"。如果要发送 DOM 树信息或其它不希望转换的信息,请设置为 false。

scriptCharsetString只有当请求时dataType为"jsonp"或"script",并且type是"GET"才会用于强制修改charset。通常只在本地和远程的内容编码不同时使用。

successFunction请求成功后的回调函数。参数:由服务器返回,并根据dataType参数进行处理后的数据;描述状态的字符串。 Ajax 事件。

function (data, textStatus) {
// data 可能是 xmlDoc, jsonObj, html, text, 等等...
this; // 调用本次AJAX请求时传递的options参数
}
traditionalBoolean如果你想要用传统的方式来序列化数据,那么就设置为true。请参考工具分类下面的jQuery.param 方法。

timeoutNumber设置请求超时时间(毫秒)。此设置将覆盖全局设置。

typeString(默认: "GET") 请求方式 ("POST" 或 "GET"), 默认为 "GET"。注意:其它 HTTP 请求方法,如 PUT 和 DELETE 也可以使用,但仅部分浏览器支持。

urlString(默认: 当前页地址) 发送请求的地址。

usernameString用于响应HTTP访问认证请求的用户名

xhrFunction需要返回一个XMLHttpRequest 对象。默认在IE下是ActiveXObject 而其他情况下是XMLHttpRequest 。用于重写或者提供一个增强的XMLHttpRequest 对象。这个参数在jQuery 1.3以前不可用。

示例
描述:
加载并执行一个 JS 文件。

jQuery 代码:
$.ajax({
type: "GET",
url: "test.js",
dataType: "script"
});描述:
保存数据到服务器,成功时显示信息。

jQuery 代码:
$.ajax({
type: "POST",
url: "some.php",
data: "name=John&location=Boston",
success: function(msg){
alert( "Data Saved: " + msg );
}
});描述:
装入一个 HTML 网页最新版本。

jQuery 代码:
$.ajax({
url: "test.html",
cache: false,
success: function(html){
$("#results").append(html);
}
});描述:
同步加载数据。发送请求时锁住浏览器。需要锁定用户交互操作时使用同步方式。

jQuery 代码:
var html = $.ajax({
url: "some.php",
async: false
}).responseText;描述:
发送 XML 数据至服务器。设置 processData 选项为 false,防止自动转换数据格式。

jQuery 代码:
var xmlDocument = [create xml document];
$.ajax({
url: "page.php",
processData: false,
data: xmlDocument,
success: handleResponse
});
AJAX 教程】Jquery 实现 AJAX 请求的三种方式 Jquery 实现 AJAX 请求的三种方式 目录 Jquery 实现 AJAX 请求的三种方式 简介 项目准备 $.get()方法 $.post()方法 $.ajax()方法 项目演示 相关文章【AJAX 教程】JS 原生 AJAX 请求 简介 JQuery 脚本库里所提供AJAX 提交的方法有很多,但主要的方法有 $.get(), $.post(), $.ajax()。其中 $.ajax() 是前两种方法的底层实现,可以提供比前两者更多的属性与参数设置,如果需要高级的... 阅读详情

相关推荐

jQueryajax使用

文章目录jQuery 中的 ajax1. $.ajax常用选项参数介绍:2. $.get3. $.post4. 全局事件处理 jQuery 中的 ajax jQuery 中有一套专门针对 AJAX 的封装,功能十分完善,经常使用,需要着重注意。 参考: http://www.jquery123.com/category/ajax/ http://www.w3school.com.cn/jquery/jquery_ref_ajax.asp 1. $.ajax $.ajax({ url: './ge

流楚丶格念的博客 6285

jQueryajax的processData参数官方介绍

关于ajax的processData,百度了一下有的博客写 这里其实是错的,默认值是为true,但是设置为true的时候,jquery 会将数据序列化,所以使用 ajax 上传文件时,这里建议使用processData: false 官方文档解释 最后:百度的也不一定是对的,建议还是去官方文档看准确。 ...

神薯片 8071

jquery中的contentType和processData参数解释

使用jQuery$.ajax()方法的时候参数processData默认为true(该方法为jQuery独有的) 默认情况下会将发送的数据序列化以适应默认的内容类型application/x-www-form-urlencoded。contentType:默认值是true 设置ajax向后台提交参数之前,是否把所有的参数统一按urlencoded编码。请求体中的格式就是json格式{"id":"xxx","name","xxx"}请求体中的内容是id=xxx&owner=xxx&name=xxx。...

tiantiantbtb的博客 1999

ajax processdata的作用,浅谈Ajax中的contentType和processData

contentType在上次的项目中有提到,上传文件时,要将contentType和processData都设置为 false,现在给出我的理解(轻拍contentType (default: ‘application/x-www-form-urlencoded; charset=UTF-8’)When sending data to the server, use this content ty...

weixin_31062533的博客 2433

Ajax的实例以及bootstrap的使用

省市联动与分页面板

weixin_67235801的博客 4049

jquery ajax提交表单form数据几种方式小结 a标签提交,input标签提交 submit提交

举个例子。 &amp;amp;amp;amp;lt;a href=&amp;amp;amp;quot;javascript:void(0)&amp;amp;amp;quot; id=&amp;amp;amp;quot;click&amp;amp;amp;quot;&amp;amp;amp;amp;gt;点击&amp;amp;amp;amp;lt;/a&amp;amp;amp;amp;gt; //jq获取标签,并且绑定单击事件 $(“#cl

fengcai0123的专栏 3182

JavaWeb-Ajax

文章目录1.基本介绍2.应用场景3.两种通信方式对比1.传统web通信方式2.Ajax通信方式4.原生Ajax1.快速入门1.案例2.创建maven项目,导入依赖3.编写代码1.User.java2.login.html3.CheckUserServlet.java4.结果4.后置资料5.课后作业——接入DB1.导入依赖2.创建德鲁伊连接池配置文件src/druid.properties3.创建德鲁伊工具类java/utils/JDBCUtilsByDruid.java4.创建java/BasicDao_/

Sun的个人博客 1178

JQuery发送Ajax请求的5种简单使用方式,一看就会~

JQuery发送Ajax请求的5种简单使用方式,一看就会~ 1、Ajax简介 1.1 什么是Ajax Ajax即Asynchronous Javascript And XML(异步JavaScript和XML),在 2005年被Jesse James Garrett提出的新术语,用来描述一种使用现有技术集合的新方法,包括: HTML 或 XHTML, CSS, JavaScript, DOM, XML, XSLT, 以及最重要的XMLHttpRequest。使用Ajax技术网页应用能够快速地将增量更新呈现在

冷芝士鸭的学习笔记 9873

原生AJAXjQuery Ajax创建使用

AJAX 全称为 Asynchronous JavaScript And Xml ,表示异步的Java脚本和新技术。

jocer_zhu的博客 968

jQuery实现Ajax方式提交表单

提交表单一般通过同步的方式提交,提交后页面刷新或跳转到新页面来显示服务器端返回的处理结果。如果表单提交后有另外的操作或业务需求需要还在这个页面上显示或处理,那么页面不能整体刷新,这时第一想到的就是采用ajax方式提交表单。下面完整的介绍一个表单采用ajax方式提交的流程。 一、准备 1、页面引入jQuery文件 2、页面引入jQuery的表单插件jQuery.form.js 二、实施

仰望星空的代码 7万+

原生AJAX以及JQuery发送AJAX请求的几种方式

JSON&amp;amp;AJAX 文章目录JSON&amp;amp;AJAX1. JSON1.1 json概述1.2 Json使用3. 原生AJAX4. JQueryAJAX4.1 GET请求方式4.2 POST请求方式4.3 ajax请求方式4.4 JQuery3.0 的GET新增签名方式4.5 JQuery3.0 的POST新增签名方式 1. JSON 使用AJAX会用到JSON的相关内容,这里简单介绍一...

zmysn_a的博客 2755

Ajax】原生AjaxjQuery中的Ajax

文章目录1 express 基本使用2 原生 Ajax2.1 Ajax 简介2.2 XML 简介2.3 Ajax 的特点2.3.1 Ajax 的优点2.3.2 Ajax 的缺点2.4 Ajax使用2.4.1 核心对象2.4.2 使用步骤2.4.3 解决 IE 缓存问题2.4.4 AJAX 请求状态2.5 GET.html2.6 POST.html2.7 JSON.html2.8 IE 缓存问题2.9 超时与网络异常2.10 取消请求2.11 重复请求问题3 jQuery 中的 Ajax3.1 get 请

weixin_45980065的博客 1681

ajax中url如何使用,jQuery Ajax url使用方式

jQuery Ajax使用场景:页面需要通过后台逻辑,但只需要局部刷新以显示新的内容。jQuery Ajax url使用方式1.servlet方式:需要在struts.xml中写一个action,跳转地址写servlet;需要重写init方法(为了使用spring注入的bean);设置响应编码response.setContentType("text/html; charset=UTF-8");...

weixin_35676504的博客 1465

jQuery AJAXJSON数据使用小结

使用jquery首先要引入jquery相应文件,下载jQuery(https://code.jquery.com),选择相应的版本,右键另存为……即可。   在前端中引入jquery (我使用还是2.1.4版本):<!--加载百度cdn jquery失败时使用本地的jquery--> <script src="http://libs.baidu.com/jquery/2.1.4/jque

qq_20828113的博客 3537

使用jQuery处理Ajax

跨域,指的是浏览器不能执行其他网站的脚本例子:比如在网站中使用ajax请求其他网站的天气、快递或者其他数据接口产生跨域的原因由浏览器的同源策略造成的===>同域名,同端口,同协议。

nice66660的博客 1905

ajax的书写方式,jquery ajax几种书写方式的总结

Ajax在前端的应用极其广泛,因此,我们有必要对其进行总结,以方便后期的使用AJAX优点:可以异步请求服务器的数据,实现页面数据的实时动态加载, 在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。jquery在全局对象jquery(也就是$)绑定了ajax()函数,可以处理Ajax请求,ajax常用的配置选项有:async 是否异步执行,默认为True,千万不要指定为Fal...

weixin_35414437的博客 783

ajaxjquery怎么实现,ajax使用jquery实现方式

1、jqueryajax方法。$("#ajaxbtn").click(function(){$.ajax({url:"json.do",beforeSend:function(){ $("#status").html("");},success:function(data){$("#status").html(data.name);}});});2、jquery的get请求。$(funct...

weixin_39547158的博客 475

jQuery Ajax小结

通过HTTP请求加载远程数据 它是jQuery底层AJAX实现,更多的高层实现可以使用$.get , $.post 等。 $.ajax()返回其创建的XML HttpRequest对象, 大多数情况不必使用此函数,而是使用高层实现

NewReErWen的博客 247
上一篇: ActionContext和ServletActionContext小结
下一篇: Hibernate瞬态、持久化状态、托管状态小结
iteye_1359
博客等级 码龄8年 0粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值