jquery $.ajax 同步调用 实现原理
ajax原理介绍

ajax原理介绍AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。
主要包含了以下几种技术Ajax(Asynchronous JavaScript + XML)的定义基于web标准(standards-based presentation)XHTML+CSS的表示;使用 DOM(Document Object Model)进行动态显示及交互;使用 XML 和 XSLT 进行数据交换及相关操作;使用 XMLHttpRequest 进行异步数据查询、检索;使用 JavaScript 将所有的东西绑定在一起。
英文参见Ajax的提出者Jesse James Garrett的原文。
类似于DHTML或LAMP,AJAX不是指一种单一的技术,而是有机地利用了一系列相关的技术。
事实上,一些基于AJAX的“派生/合成”式,derivative/composite)的技术正在出现,如“AFLAX”。
AJAX的应用使用支持以上技术的web浏览器作为运行平台。
这些浏览器目前包括:Mozilla、Firefox、Internet Explorer、Opera、Konqueror及Safari。
但是Opera不支持XSL格式对象,也不支持XSLT。
与传统的web应用比较传统的web应用允许用户填写表单(form),当提交表单时就向web服务器发送一个请求。
服务器接收并处理传来的表单,然後返回一个新的网页。
这个做法浪费了许多带宽,因为在前後两个页面中的大部分HTML代码往往是相同的。
由于每次应用的交互都需要向服务器发送请求,应用的响应时间就依赖于服务器的响应时间。
这导致了用户界面的响应比本地应用慢得多。
与此不同,AJAX应用可以仅向服务器发送并取回必需的数据,它使用SOAP 或其它一些基于XML的web service接口,并在客户端采用JavaScript处理来自服务器的响应。
jquery中$.ajax()方法使用详解

jquery中$.ajax()⽅法使⽤详解1.url说明:发送请求的地址(默认为当前页⾯),要求是String类型的参数,⽐如是.net下,"~wexin(控制器)/getweinxinmenu(动作)",2.type说明:请求⽅法(post或者get),默认是get,要求是String类型的参数。
其他的htpp请求如(put、delete)等也⽀持,但是要浏览器⽀持3.timeout说明:设置请求超时时间(毫秒),要求是number类型的参数。
此设置将覆盖$.ajaxSetup()⽅法的全局设置。
4.async说明:默认值为true,所有请求是异步,要求是Bool类型的参数,如果需要发送同步请求,将此项设置为false。
注意:同步时浏览器会被锁住。
5.cache说明:默认为true(当datatype为script时,默认为false)从浏览器缓存中加载请求信息,要求是Bool类型的参数。
6.data说明:发送到服务器的数据,要求是Object或string类型的参数。
如果已经不是字符串,将⾃动转换为字符串格式。
get请求中将附加在url 后。
防⽌这种⾃动转换,可以查看 processData选项。
对象必须为key/value格式,例如{foo1:"bar1",foo2:"bar2"}转换为&foo1=bar1&foo2=bar2。
如果是数组,JQuery将⾃动为不同值对应同⼀个名称。
例如{foo:["bar1","bar2"]}转换为&foo=bar1&foo=bar2。
7.dataType:说明:预期服务器返回的数据类型,要求为String类型的参数。
如果不指定,JQuery将⾃动根据http包mime信息返回responseXML或responseText,并作为回调函数参数传递。
jQuery调用AJAX异步操作超清晰教程

JQUERY AJAX异步操作详细说明AJAX 全称 Asynchronous JavaScript and XML(异步的 JavaScript 和XML)。
它并非一种新的技术,而是以下几种原有技术的结合体。
1)使用CSS和XHTML来表示。
2)使用DOM模型来交互和动态显示。
3)使用XMLHttpRequest来和服务器进行异步通信。
4)使用javascript来绑定和调用。
通过AJAX异步技术,可以在客户端脚本与web服务器交互数据的过程中使用XMLHttpRequest对象来完成HTTP请求(Request)/应答(Response)模型:1)不需要用户等待服务端响应。
在异步派发XMLHttpRequest请求后控制权马上就被返回到浏览器。
界面不会出现白板,在得到服务器响应之前还可以友好的给出一个加载提示。
2)不需要重新加载整个页面。
为XMLHttpRequest注册一个回调函数,待服务器响应到达时,触发回调函数,并且传递所需的少量数据。
“按需取数据”也降低了服务器的压力。
3)不需要使用隐藏或内嵌的框架。
在XHR对象之前,模拟Ajax通信通常使用hack手段,如使用隐藏的或内嵌的框架(<iframe>标签)。
下面介绍下AJAX中的重要对象:XMLHttpRequest。
XMLHttpRequest对象(XHR)XMLHttpRequest是一套可以在Javascript、VbScript、Jscript等脚本语言中通过http协议传送或接收XML及其他数据的一套API。
XMLHttpRequest对象首次以ActiveX对象形式在微软Internet Explorer(IE) 5中以引入。
其他浏览器制造商在认识到这一对象重要性后也纷纷实现了XMLHttpRequest对象,但是以一个本地JavaScript对象而不是作为一个ActiveX 对象实现。
而如今,由于安全性、标准等问题,微软已经在其IE 7中把XMLHttpRequest实现为一个本地JavaScript对象。
ThinkPHP+jquery实现Ajax效果

1:首先将jquery文件导入到Public/Js目录下,新建一个custom.js 文件,如下图所示:2:add.html 页面:<script type="text/javascript"src="/Public/Js/jquery.js"></script> <script type="text/javascript"src="/Public/Js/custom.js"></script> <form action="/Student/insert"method="post"><div>学号:<input type="text"name="sno"id="sno" onblur="validateSno()"/><span id="info"></span></div><div>姓名:<input type="text"name="sname"/></div><div>年龄:<input type="text"name="sage"/></div><div>性别:<input type="radio"name="sgender"value="F"/>F<input type="radio"name="sgender"value="M"/>M </div><div><input type="submit"value="提交"/></div></form>数据库表:CREA TE TABLE `think_student` (`sno` varchar(10) NOT NULL,`sname` varchar(20) NOT NULL,`sage` tinyint(4) NOT NULL,`sgender` char(1) NOT NULL,PRIMARY KEY (`sno`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;3:custom.js 页面:function validateSno(){$.post("/Student/validatesno",{sno:$("#sno").val()},function(returnedData,status){var result=returnedData;if(result!=null){$("#info").html("<fontcolor=red>"+result+"</font>");}else{$("#info").html("");}});}4:StudentAction.class.php/*** ajax 校验Student 的 sno是否存在*/public function validatesno(){$Student=M('Student');if($Student->find($this->_param('sno'))==null){ echo '';}else{echo '此学号已经存在!';}}5:结果页面。
jquery实现原理

jquery实现原理
jQuery是一个JavaScript库,它的实现原理主要包括以下几个
方面:
1. DOM操作:jQuery通过封装了一系列的DOM操作方法,
使得通过简洁的语法可以轻松地操作HTML文档中的元素。
jQuery通过封装了常用的DOM操作函数,使得开发者可以快
速地选择元素、修改元素的属性、样式、内容等。
2. 事件处理:jQuery提供了统一的事件处理函数,可以通过选择器选择元素,并给元素绑定事件。
当事件触发时,可以执行相应的回调函数。
它解决了不同浏览器之间的兼容性问题,并且还实现了事件的冒泡和委托。
3. AJAX封装:jQuery封装了XMLHttpRequest对象,提供了
一系列的AJAX方法,可以通过简单的方式实现异步加载数据。
它通过XMLHttpRequest对象发送请求,并处理服务器返
回的数据。
4. 动画效果:jQuery提供了强大的动画效果的支持,可以轻松地实现元素的淡入淡出、滑动、展开收起等效果。
它通过修改元素的CSS属性值来实现动画效果的改变。
5. 工具函数:jQuery还提供了丰富的工具函数,包括类型判断、字符串处理、数组操作等,方便开发者进行常用的操作。
以上就是jQuery的简单实现原理。
它通过封装常用的操作和
方法,提供了简洁的语法和接口,使得开发者可以更加高效地进行DOM操作、事件处理、异步请求和动画效果的实现。
ajax技术原理

ajax技术原理Ajax是一种用于创建交互式Web应用程序的技术,它可以让Web页面可以在不刷新整个页面的情况下向服务器发送请求并获取数据,然后在页面中动态地显示它们。
Ajax技术是基于多种技术的复杂集成,它涉及到浏览器端JavaScript、DOM、XMLHttpRequest对象、服务器端脚本等多个方面。
本文将针对Ajax技术的原理、工作流程、技术架构等方面进行详细的介绍。
一、Ajax技术的原理Ajax全称为Asynchronous JavaScript and XML,它最初是由Jesse James Garrett提出的一种Web开发技术,Ajax技术的核心思想是使用JavaScript和XMLHttpRequest对象来与服务器异步通信,从而实现页面的更新,而不需要刷新整个页面。
在使用Ajax技术前,Web应用程序需要刷新整个页面,同时每次页面刷新会向服务器发送一次请求,导致页面响应延迟,影响用户体验。
而使用Ajax技术后,浏览器可以只更新部分页面,不需要刷新整个页面,同时可以多次向服务器请求数据。
Ajax技术的原理是基于JavaScript语言,通过JavaScript语法实现浏览器与服务器之间的异步通信。
在Web页面中,我们可以通过JavaScript创建一个XMLHttpRequest对象,然后使用该对象向服务器发送请求并获取数据。
发送的请求类型可以是各种不同的请求类型,比如GET、POST、PUT、DELETE等。
服务器接收到请求后,会对请求进行处理,并将响应数据返回给浏览器。
浏览器接收到响应数据后,就可以将其显示到页面中,完成页面的更新,而不需要刷新整个页面。
二、Ajax技术的工作流程Ajax技术的工作流程是由浏览器端和服务器端两部分组成。
浏览器端负责通过JavaScript创建XMLHttpRequest 对象,然后向服务器发送HTTP请求。
在服务器端,接收到HTTP请求后,服务器会根据请求类型进行相应的处理,然后将处理结果返回给浏览器。
ajax原理和实现步骤

ajax原理和实现步骤
Ajax的原理是利用前端的XMLHttpRequest对象与后端的服务
器进行异步通信,实现页面局部的更新。
实现步骤如下:
1. 创建XMLHttpRequest对象:使用`new XMLHttpRequest()`
创建一个新的XMLHttpRequest对象。
2. 设置回调函数:使用`onreadystatechange`属性设置一个回调
函数,在服务器响应发生改变时触发。
3. 打开请求:使用`open()`方法打开与服务器的连接,传入请
求的方法和URL。
4. 发送请求:使用`send()`方法将请求发送给服务器。
5. 监听状态变化:在回调函数中,使用`readyState`属性来判断服务器的响应状态,当`readyState`等于4时表示请求完成。
6. 处理服务器响应:通过`status`属性获取服务器的响应状态码,常见的有200表示成功,404表示未找到。
然后使用
`responseText`或者`responseXML`来获取服务器的响应数据。
7. 更新页面内容:通过获取到的响应数据,可以使用DOM操
作或者innerHTML来更新页面的内容。
以上就是Ajax实现的基本步骤,通过异步通信可以实现无需
刷新整个页面的数据更新。
jQuery Ajax 实例 全解析

jQuery确实是一个挺好的轻量级的JS框架,能帮助我们快速的开发JS应用,并在一定程度上改变了我们写JavaScript代码的习惯。
废话少说,直接进入正题,我们先来看一些简单的方法,这些方法都是对jQuery.ajax()进行封装以方便我们使用的方法,当然,如果要处理复杂的逻辑,还是需要用到jQuery.ajax()的(这个后面会说到).1. load( url, [data], [callback] ) :载入远程HTML 文件代码并插入至DOM 中。
url (String) : 请求的HTML页的URL地址。
data (Map) : (可选参数) 发送至服务器的key/value 数据。
callback (Callback) : (可选参数) 请求完成时(不需要是success的)的回调函数。
这个方法默认使用GET 方式来传递的,如果[data]参数有传递数据进去,就会自动转换为POST方式的。
jQuery 1.2 中,可以指定选择符,来筛选载入的HTML 文档,DOM 中将仅插入筛选出的HTML 代码。
语法形如"url #some > selector"。
这个方法可以很方便的动态加载一些HTML文件,例如表单。
示例代码:$(".ajax.load").load("/yeer/archive/2009/06/10/ 1500682.html .post",function (responseText, textStatus, XMLHttpRequest){this;//在这里this指向的是当前的DOM对象,即$(".ajax.load")[0]//alert(responseText);//请求返回的内容//alert(textStatus);//请求状态:success,error//alert(XMLHttpRequest);//XMLHttpRequest对象});这里将显示结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
jquery $.ajax 同步调用实现原理
jQuery .ajax 同步调用实现原理
在前端开发中,经常会涉及到使用Ajax进行异步请求。
而jQuery库中的.ajax()方法是非常常用的一种实现方式。
.ajax()方法使用起来非常方便,可以对数据进行异步请求,并且可以设置回调函数来处理返回的数据。
但是有时候我们需要在请求完成之前进行一些操作,此时可以使用同步调用的方式来实现。
本文将详细介绍使用jQuery .ajax()方法进行同步请求的实现原理。
1. .ajax()方法简介
.ajax()是jQuery库中用于发送HTTP请求的核心方法。
它是一个异步方法,可以向服务器发送GET、POST等请求,并处理服务器返回的数据。
.ajax()方法使用一个包含键值对的配置对象作为参数,可以设置请求的地址、请求方式、请求参数、回调函数等。
当请求完成时,可以在回调函数中处理返回的数据。
2. 异步请求与同步请求的区别
在讲解实现原理之前,我们先来了解一下异步请求和同步请求的区别:
- 异步请求:是指在发送请求的同时,主线程不会阻塞,而是继续执行后续的代码。
当请求完成后,会通过回调函数来处理返回的数据。
异步请求
一般使用于需要较长时间才能返回结果的场景,如网络请求、文件上传等。
- 同步请求:是指在发送请求的同时,主线程会一直等待请求的响应结果,而不会继续执行后续的代码。
只有在请求完成后,才会继续执行下面的代码。
同步请求一般使用于需要立即获取结果的场景,如表单提交、页面加载等。
在默认情况下,.ajax()方法是异步请求的,即发送请求后会继续执行后续的代码。
而实现同步请求则需要额外的设置。
3. 同步请求的设置
要实现同步请求,可以通过设置.ajax()方法的async选项为false来实现。
async的默认值为true,表示异步请求,当设置为false时表示同步请求。
示例代码:
javascript
.ajax({
url: 'example',
async: false,
其他配置项...
success: function(data) {
处理返回的数据
}
});
4. 同步请求的实现原理
实现同步请求的关键在于事先知道请求需要的时间,以便正确地进行阻塞。
首先,当发送一个异步请求时,浏览器会创建一个XMLHttpRequest对象,并通过该对象来发送请求。
而同步请求的实现原理是通过改写XMLHttpRequest对象的open()和send()方法来实现的。
- open()方法:open()方法用于初始化一个请求,指定请求的方法、URL、是否异步等。
- send()方法:send()方法用于发送请求。
当使用异步请求时,open()和send()方法会立即返回并继续执行后续的代码。
而实现同步请求时,需要等待请求的响应结果返回,因此需要对open()和send()方法进行改写。
具体实现步骤如下:
1) 创建一个XMLHttpRequest对象xhr。
2) 使用Object.defineProperty()方法重写
XMLHttpRequest.prototype.open()方法。
示例代码:
javascript
(function() {
var xhrOpen = XMLHttpRequest.prototype.open; XMLHttpRequest.prototype.open = function(method, url, async) {
this._async = async; 保存原始的async值
xhrOpen.call(this, method, url, false); 强制设置为同步请求};
})();
这段代码会重写XMLHttpRequest.prototype.open()方法,将async参数的值保存在this._async中,并将该值设置为false,即将异步请求改为同步请求。
3) 使用Object.defineProperty()方法重写
XMLHttpRequest.prototype.send()方法。
示例代码:
javascript
(function() {
var xhrSend = XMLHttpRequest.prototype.send; XMLHttpRequest.prototype.send = function(data) {
if (this._async === false) {
同步请求需要先调用setRequestHeader()方法设置
Content-Type
this.setRequestHeader('Content-Type',
'application/x-www-form-urlencoded');
xhrSend.call(this, data); 发送同步请求
}
};
})();
这段代码会重写XMLHttpRequest.prototype.send()方法,在同步请求时,调用setRequestHeader()方法设置请求头的内容类型,并调用原始的send()方法发送请求。
通过改写open()和send()方法,实现了同步请求。
当使用.ajax()方法发送同步请求时,会调用改写后的open()和send()方法,从而实现阻塞,并在返回结果后继续执行后续的代码。
5. 使用注意事项
在开发中使用同步请求时,需要注意以下几点:
- 同步请求会阻塞UI线程,会导致页面卡顿或不响应。
因此,应该尽量避免在主线程中使用同步请求。
- 同步请求的发送和响应过程是不可中断的,如果请求时间过长,会导致页面无响应。
- 同步请求会导致浏览器的进程阻塞,降低页面性能和用户体验。
因此,建议在开发中尽量使用异步请求,并合理处理返回的数据。
只有在必要的情况下,才使用同步请求。
总结
本文详细介绍了使用jQuery .ajax()方法实现同步请求的原理和步骤。
同步请求是通过改写XMLHttpRequest对象的open()和send()方法来实现
的。
但是在实际开发中,建议尽量使用异步请求,并合理处理返回的数据,避免使用同步请求导致页面卡顿或无响应。