ajax的jquery写法和原生写法
一、ajax的简介
Ajax被认为是(Asynchronous(异步) JavaScript And Xml的缩写)。现在,允许浏览器与服务器通信而无须刷新当前页面的技术都被叫做Ajax.
同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。
异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式 。
二、ajax的缺陷
AJAX大量使用了JavaScript和AJAX引擎,而这个取决于浏览器的支持。IE5.0及以上、Mozilla1.0、NetScape7及以上版本才支持,Mozilla虽然也支持AJAX,但是提供XMLHttpRequest的方式不一样。所以,使用AJAX的程序必须测试针对各个浏览器的兼容性。
AJAX更新页面内容的时候并没有刷新整个页面,因此,网页的后退功能是失效的;有的用户还经常搞不清楚现在的数据是旧的还是已经更新过的。这个就需要在明显位置提醒用户“数据已更新”。
对流媒体的支持没有FLASH好。
一些手持设备(如手机、PDA等)现在还不能很好的支持Ajax。
form数据的序列化:
$('#submit').click(function(){
$('#form').serialize(); //会根据input里面的name,把数据序列化成字符串;eg:name=yang
$('#form').serializeArray(); //会根据input里面的name,把数据序列化成数组;eg:[object]
//注意:没有name会获取不到值
//下面两种不是jQuery的方法
JSON.parse() //json字符串转化为json对象
JSON.stringify() //json对象转化为json字符串
});
三、ajax的四种type类型:
1、GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容,即该请求不会产生副作用。无论进行多少次操作,结果都是一样的。
2、与GET不同的是,PUT请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的update操作一样,用来修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次PUT操作,其结果并没有不同。
3、POST请求同PUT请求类似,都是向服务器端发送数据的,但是该请求会改变数据的种类等资源,就像数据库的insert操作一样,会创建新的内容。几乎目前所有的提交操作都是用POST请求的。
4、DELETE请求顾名思义,就是用来删除某一个资源的,该请求就像数据库的delete操作。
简单的说就是
get理解为查询 delete就是删除 post就是新增 put就是更新数据
四、ajax的原生写法
/*
ajax({
type:'',//请求方式
url:'',//请求地址
asny:true, //是否异步
data:'',//数据
dType:'',//请求数据类型
success:function(response){},//执行成功的回调函数
error:function(status){}//执行失败的回调函数
})
参数json所需要的属性:
*type : string 可缺省,代表请求的方式(默认'GET')
*url :string 不可缺省,代表请求的地址
*asny : boolean 可缺省,(默认'true')代表是否异步
*data : json代表需要传递的数据
*dType:data的数据类型
*success :可缺省,function代表成功的回调函数,该函数第一个形参代表后台返回的数据
*error :可缺省,function代表失败的回调函数,该函数第一个形参代表请求的状态码
*/
function ajax(obj){
var type = obj.type || 'GET',//默认是GET
url = obj.url,
asny = obj.asny !== false,
data = obj.data,
dType = obj.dataType || 'json',
success = obj.success,
error = obj.error;
//处理data
for(var key in data){
data += key + '=' + obj.data[key] + '&';
}
var xhr;//创建XMLHttpRequest
if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}else{
try{
xhr = new ActiveXObject('Msxml2.XMLHTTP.6.0');
}catch(e){
xhr = new ActiveXObject('Msxml2.XMLHTTP.3.0');
}
}
if( type.toUpperCase() == 'GET' ){//处理GET
var d = new Date();
url += '?' + data + '_=' + d.getTime();//处理缓存问题
data = null;
}
xhr.open(type,url,asny);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');//设置请求头信息
xhr.send(data);//发送数据
//xhr监听
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status ==200 ){
var response;
if( dType == 'text' || dType == 'json'){
if( dType == 'json'){//json
response = JSON.parse( xhr.responseText );
}else{//普通文本
response = xhr.responseText;
}
}else{//XML
response = xhr.responseXML;
}
success && success(response);//成功回调函数
}else{//请求失败
error && error(xhr.status);//失败回调函数
}
}
}
五、ajax的jquery写法:
$.ajax({
type:"POST", //请求方式 get查询 post增加 put修改 delete删除
url:"http://localhost:8080/info",//请求路径
async:true, //或false 是否异步
data:{name:'ycg',age:25},
timeout:5000,//超时时间
dataType:'json', //返回的数据格式:json/xml/html/script/jsonp/text
beforeSend:function(xhr){
console.log('发送前');
}
success:function(data,textStatus,jqXHR){
console.log('成功');
},
error:function(error){
console.log('错误');
},
complete:function(){
console.log('结束');
}
})
ajax的jquery写法和原生写法的更多相关文章
- JavaScript AJAX原生写法
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...
- [译]脱离jQuery,使用原生Ajax
脱离jQuery,使用原生Ajax 标签: Ajax translate 英文出处:<A Guide to Vanilla Ajax Without jQuery> 翻译: 刘健超 J.c ...
- 框架----Django之Ajax全套实例(原生AJAX,jQuery Ajax,“伪”AJAX,JSONP,CORS)
一.原生AJAX,jQuery Ajax,“伪”AJAX,JSONP 1. 浏览器访问 http://127.0.0.1:8000/index/ http://127.0.0.1:8000/fake_ ...
- jQuery的三种写法
jQuery的三种写法 jQuery一共有三种写法,写法如下: <script type="text/javascript" src="js/jquery-1.9. ...
- jquery换一批的写法
jquery换一批的写法 <pre> <img src="{$yuming}/images/3/huanyipi.png" alt="" cu ...
- jQuery? 回归JavaScript原生API
如今技术日新月异,各类框架库也是层次不穷.即便当年漫山红遍的JQuery(让开发者write less, do more,So Perfect!!)如今也有被替代的大势.但JS原生API写法依旧:并且 ...
- Rails Guide--Working with JavaScript in Rails; 如何把jquery转化为原生js
1 An Introduction to Ajax 打开网页的的过程也叫:request response cycel. JavaScript也可以request然后parse the respons ...
- 你可能不需要 jQuery!使用原生 JavaScript 进行开发
很多的 JavaScript 开发人员,包括我在内,都很喜欢 jQuery.因为它的简单,因为它有很多丰富的插件可供使用,和其它优秀的工具一样,jQuery 让我们开发人员能够更轻松的开发网站和 We ...
- 放弃jQuery,使用原生js吧!
转自:http://itakeo.com/blog/2015/07/28/nojq/ 随着IE6.7.8的逐渐淘汰,HTML5的兴起,以及侧重点放在了移动端,jQuery可能变的不在那么重要,原生一样 ...
随机推荐
- 【总结整理】javascript的函数调用时是否加括号
javascript的函数调用时是否加括号 if(event.preventDefault){ event.preventDefault(); if判断条件里面不要加括号,不加括号是应该以属性形式,i ...
- AngularJs(Part 6)
Overcomming same-origin policy restrictions with JSONP. AJAX has a restriction that it can only retr ...
- 7、scala面向对象-继承
一.继承 1.extends Scala中,让子类继承父类,与Java一样,也是使用extends关键字 继承就代表,子类可以从父类继承父类的field和method:然后子类可以在自己内部放入父类所 ...
- 阶段3-团队合作\项目-网络安全传输系统\sprint3-账号管理子系统设计\第2课-账号管理子系统设计
账号管理子系统的设计 客户端需要登录到服务器,在服务器去查询数据库,进行验证该用户. 打开client.c文件 编译之 把它复制到开发板里面去 这个程序是在本地数据库测试的!!!!!!!!!!!!!! ...
- Java静态检测工具/Java代码规范和质量检查简单介绍(转)
静态检查: 静态测试包括代码检查.静态结构分析.代码质量度量等.它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行.代码检查代码检查包括代码走查.桌面检查.代码审查等,主要检查代码 ...
- Saving output of a grep into a file with colors
19 down vote favorite 7 I need to save the result of a grep command into a file, but I also want the ...
- opencv头文件
转载自:http://blog.csdn.net/aaron121211/article/details/51526901 1. .hpp文件是.h和.cpp文件在一起的2. #include < ...
- 【mybatis 如何写union和union查询】
select d.* from (select a.CheckType,b.UserName,a.CheckNumber, a.PayName ,a.PayBank,a.PayBankNumber,a ...
- 解决Navicat 无法连接mysql8.0
必须执行下面两个步骤,缺一不可. 一. mysql8.0加密方式与mysql5几加密方式不同,需要先更改加密方式. 更改加密方式 ALTERUSER 'root'@'localhost' ...
- 移动端与H5页面像素的差异与关系
最近工作任务主要是移动端内嵌H5页面,一次与原生进行像素交互下,发现了这个天坑,再次做个记录