一、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写法和原生写法的更多相关文章

  1. JavaScript AJAX原生写法

    <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...

  2. [译]脱离jQuery,使用原生Ajax

    脱离jQuery,使用原生Ajax 标签: Ajax translate 英文出处:<A Guide to Vanilla Ajax Without jQuery> 翻译: 刘健超 J.c ...

  3. 框架----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_ ...

  4. jQuery的三种写法

    jQuery的三种写法 jQuery一共有三种写法,写法如下: <script type="text/javascript" src="js/jquery-1.9. ...

  5. jquery换一批的写法

    jquery换一批的写法 <pre> <img src="{$yuming}/images/3/huanyipi.png" alt="" cu ...

  6. jQuery? 回归JavaScript原生API

    如今技术日新月异,各类框架库也是层次不穷.即便当年漫山红遍的JQuery(让开发者write less, do more,So Perfect!!)如今也有被替代的大势.但JS原生API写法依旧:并且 ...

  7. Rails Guide--Working with JavaScript in Rails; 如何把jquery转化为原生js

    1 An Introduction to Ajax 打开网页的的过程也叫:request response cycel. JavaScript也可以request然后parse the respons ...

  8. 你可能不需要 jQuery!使用原生 JavaScript 进行开发

    很多的 JavaScript 开发人员,包括我在内,都很喜欢 jQuery.因为它的简单,因为它有很多丰富的插件可供使用,和其它优秀的工具一样,jQuery 让我们开发人员能够更轻松的开发网站和 We ...

  9. 放弃jQuery,使用原生js吧!

    转自:http://itakeo.com/blog/2015/07/28/nojq/ 随着IE6.7.8的逐渐淘汰,HTML5的兴起,以及侧重点放在了移动端,jQuery可能变的不在那么重要,原生一样 ...

随机推荐

  1. Hadoop中Partition的定制

    1.解析Partition Map的结果,会通过partition分发到Reducer上,Reducer做完Reduce操作后,通过OutputFormat,进行输出,下面我们就来分析参与这个过程的类 ...

  2. Makefiles

    A tutorial by example Compiling your source code files can be tedious, specially when you want to in ...

  3. jquery 操作表格实例

    案例1:隔行变色,滑动,点击变色以(选中取消效果)(addClass(),removeClass(),toggleClass()) Html: <h4>1.隔行变行</h4> ...

  4. zoj3435(莫比乌斯反演)

    题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3435 题意: 给出一个三维坐标 (x, y, z), 问该点与 ...

  5. 水库(树形dp)

    水库 (树形dp) R国有n座城市和n-1条长度为1的双向道路,每条双向道路连接两座城市,城市之间均相互连通.现在你需要维护R国的供水系统.你可以在一些城市修建水库,在第i个城市修建水库需要每年c_i ...

  6. 洛谷P2607 [ZJOI2008]骑士

    P2607 [ZJOI2008]骑士 题目描述 Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬. 最近发生了一件可怕的事情,邪恶的Y国发动了一 ...

  7. [Xcode 实际操作]五、使用表格-(2)设置UITableView单元格高度

    目录:[Swift]Xcode实际操作 本文将演示如何制作一个自定义行高的表格视图 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit //首 ...

  8. DNS解析工具--nslookup和dig使用

    1.nslookup使用 [root@master ~]# nslookup> server 8.8.8.8    #指定域名服务器Default server: 8.8.8.8Address: ...

  9. QuotaExceededError: The quota has been exceeded. localStorage缓存超出限制

    今天在项目中遇到了一个问题,localStorage存储超出限制.报错信息如标题.这个是因为最近做了一波优化,把导航栏和一些用户信息本地化存储,都放在localStorage里,也不是每个用户会出现这 ...

  10. POJ1031 Fence

    题目来源:http://poj.org/problem?id=1031 题目大意: 有一个光源位于(0,0)处,一个多边形的围墙.围墙是“全黑”的,不透光也不反射光.距光源r处的光强度为I0=k/r, ...