原生和jQuery的ajax用法详解


Posted in Javascript onJanuary 23, 2017

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字符串
});

jQuery的ajax方法:

$.ajax({
  url:'/comm/test1.php',
  type:'POST', //GET
  async:true,  //或false,是否异步
  data:{
    name:'yang',age:25
  },
  timeout:5000,  //超时时间
  dataType:'json',  //返回的数据格式:json/xml/html/script/jsonp/text
  beforeSend:function(xhr){
    console.log(xhr)
    console.log('发送前')
  },
  success:function(data,textStatus,jqXHR){
    console.log(data)
    console.log(textStatus)
    console.log(jqXHR)
  },
  error:function(xhr,textStatus){
    console.log('错误')
    console.log(xhr)
    console.log(textStatus)
  },
  complete:function(){
    console.log('结束')
  }
})

原生的ajax方法:

$('#send').click(function(){
  //请求的5个阶段,对应readyState的值
    //0: 未初始化,send方法未调用;
    //1: 正在发送请求,send方法已调用;
    //2: 请求发送完毕,send方法执行完毕;
    //3: 正在解析响应内容;
    //4: 响应内容解析完毕;
  var data = 'name=yang';
  var xhr = new XMLHttpRequest();    //创建一个ajax对象
  xhr.onreadystatechange = function(event){  //对ajax对象进行监听
    if(xhr.readyState == 4){  //4表示解析完毕
      if(xhr.status == 200){  //200为正常返回
        console.log(xhr)
      }
    }
  };
  xhr.open('POST','url',true);  //建立连接,参数一:发送方式,二:请求地址,三:是否异步,true为异步
  xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');  //可有可无
  xhr.send(data);    //发送
});
Javascript 相关文章推荐
Javascript的IE和Firefox兼容性汇编(zz)
Feb 02 Javascript
JavaScript Event学习第三章 早期的事件处理程序
Feb 07 Javascript
js 使FORM表单的所有元素不可编辑的示例代码
Oct 17 Javascript
js 定时器setTimeout无法调用局部变量的解决办法
Nov 28 Javascript
node.js中的fs.open方法使用说明
Dec 17 Javascript
使用jquery 简单实现下拉菜单
Jan 14 Javascript
深入理解JS正则表达式---分组
Jul 18 Javascript
Vue.use源码分析
Apr 22 Javascript
详解webpack自动生成html页面
Jun 29 Javascript
JS实现手写parseInt的方法示例
Sep 24 Javascript
vue中element 上传功能的实现思路
Jul 06 Javascript
vue-cli2与vue-cli3在一台电脑共存的实现方法
Sep 25 Javascript
基于MVC方式实现三级联动(JavaScript)
Jan 23 #Javascript
利用javascript实现的三种图片放大镜效果实例(附源码)
Jan 23 #Javascript
Javascript Event(事件)的传播与冒泡
Jan 23 #Javascript
js选项卡的制作方法
Jan 23 #Javascript
bootstrap 模态框(modal)实现水平垂直居中显示
Jan 23 #Javascript
详解javascript中对数据格式化的思考
Jan 23 #Javascript
JavaScript 栈的详解及实例代码
Jan 22 #Javascript
You might like
iis下php mail函数的sendmail配置方法(官方推荐)
2012/04/25 PHP
PHP中可以自动分割查询字符的Parse_str函数使用示例
2014/07/25 PHP
浅析PHP中strlen和mb_strlen的区别
2014/08/31 PHP
给WordPress中的留言加上楼层号的PHP代码实例
2015/12/14 PHP
基于jquery的tab切换 js原理
2010/04/01 Javascript
浅析jQuery1.8的几个小变化
2013/12/10 Javascript
使用jsonp完美解决跨域问题
2014/11/27 Javascript
windows8.1+iis8.5下安装node.js开发环境
2014/12/12 Javascript
JQuery插件ajaxfileupload.js异步上传文件实例
2015/05/19 Javascript
深入浅析JavaScript字符串操作方法 slice、substr、substring及其IE兼容性
2015/12/16 Javascript
AngularJS  双向数据绑定详解简单实例
2016/10/20 Javascript
vue.js  父向子组件传参的实例代码
2017/10/29 Javascript
angularJs在多个控制器中共享服务数据的方法
2018/09/30 Javascript
示例vue 的keep-alive缓存功能的实现
2018/12/13 Javascript
如何将百度地图包装成Vue的组件的方法步骤
2019/02/12 Javascript
详解nuxt 微信公众号支付遇到的问题与解决
2019/08/26 Javascript
JS实现判断移动端PC端功能
2020/02/21 Javascript
[35:26]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第三局
2016/02/26 DOTA
[02:02]特效爆炸!DOTA2珍宝之瓶待你开启
2018/08/21 DOTA
Python实现基于HTTP文件传输实例
2014/11/08 Python
python 连接sqlite及简单操作
2017/06/30 Python
Python SVM(支持向量机)实现方法完整示例
2018/06/19 Python
pygame实现俄罗斯方块游戏
2018/06/26 Python
详解Python做一个名片管理系统
2019/03/14 Python
Python日志无延迟实时写入的示例
2019/07/11 Python
python将字符串list写入excel和txt的实例
2019/07/20 Python
对python 树状嵌套结构的实现思路详解
2019/08/09 Python
python多进程重复加载的解决方式
2019/12/13 Python
Django使用Profile扩展User模块方式
2020/05/14 Python
什么是python的自省
2020/06/21 Python
拥有超过850家商店的美国在线派对商店:Party City
2018/10/21 全球购物
墨尔本最受欢迎的复古风格品牌:Princess Highway
2018/12/21 全球购物
C#实现启动一个进程
2016/10/01 面试题
护士长2014年度工作总结
2014/11/11 职场文书
天那边观后感
2015/06/09 职场文书
pandas:get_dummies()与pd.factorize()的用法及区别说明
2021/05/21 Python