原生和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 相关文章推荐
JS对URL字符串进行编码/解码分析
Oct 25 Javascript
基于jQuery的js分页代码
Jun 10 Javascript
jquery制作搜狐快站页面效果示例分享
Feb 21 Javascript
举例说明JavaScript中的实例对象与原型对象
Mar 11 Javascript
TypeScript学习之强制类型的转换
Dec 27 Javascript
前端框架学习总结之Angular、React与Vue的比较详解
Mar 14 Javascript
微信小程序 五星评分的实现实例
Aug 04 Javascript
vue如何根据网站路由判断页面主题色详解
Nov 02 Javascript
JavaScript"模拟事件"的注意要点详解
Feb 13 Javascript
js实现登录时记住密码的方法分析
Apr 05 Javascript
如何在现代JavaScript中编写异步任务
Jan 31 Javascript
前端JavaScript大管家 package.json
Nov 02 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
3
2006/10/09 PHP
分页显示Oracle数据库记录的类之一
2006/10/09 PHP
require(),include(),require_once()和include_once()区别
2008/03/27 PHP
php adodb操作mysql数据库
2009/03/19 PHP
php文本转图片自动换行的方法
2013/03/13 PHP
解决CodeIgniter伪静态失效
2014/06/09 PHP
php自动给网址加上链接的方法
2015/06/02 PHP
PHP中时间加减函数strtotime用法分析
2017/04/26 PHP
PHP实现的文件上传类与用法详解
2017/07/05 PHP
PHP获取二叉树镜像的方法
2018/01/17 PHP
Swoole4.4协程抢占式调度器详解
2019/05/23 PHP
php抽象类和接口知识点整理总结
2019/08/02 PHP
php源码的使用方法讲解
2019/09/26 PHP
js的onload事件及初始化按钮事件示例代码
2013/09/25 Javascript
js实现iframe框架取值的方法(兼容IE,firefox,chrome等)
2015/11/26 Javascript
浅谈Vue 初始化性能优化
2017/08/31 Javascript
JavaScript学习总结(一) ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)
2018/01/07 Javascript
详谈js的变量提升以及使用方法
2018/10/06 Javascript
使用Three.js实现太阳系八大行星的自转公转示例代码
2019/04/09 Javascript
详解vue中使用vue-quill-editor富文本小结(图片上传)
2019/04/24 Javascript
JavaScript生成随机验证码代码实例
2019/09/28 Javascript
vue+Element-ui前端实现分页效果
2020/11/15 Javascript
Python实现去除代码前行号的方法
2015/03/10 Python
使用py2exe在Windows下将Python程序转为exe文件
2016/03/04 Python
Python使用logging结合decorator模式实现优化日志输出的方法
2016/04/16 Python
python调用百度REST API实现语音识别
2018/08/30 Python
python3使用flask编写注册post接口的方法
2018/12/28 Python
使用 python pyautogui实现鼠标键盘控制功能
2019/08/04 Python
python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】
2020/04/26 Python
Keras Convolution1D与Convolution2D区别说明
2020/05/22 Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
2020/07/03 Python
美国宠物美容和宠物用品购物网站:Cherrybrook
2018/12/07 全球购物
ECCO英国官网:丹麦鞋履品牌
2019/09/03 全球购物
什么是静态路由,其特点是什么?什么是动态路由,其特点是什么?
2013/07/26 面试题
2015年调度员工作总结
2015/04/30 职场文书
检察院起诉书
2015/05/20 职场文书