原生和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 相关文章推荐
改写一个简单的菜单 弹性大小
Dec 02 Javascript
JS实现点击下载的小例子
Jul 10 Javascript
jquery弹出关闭遮罩层实例
Aug 06 Javascript
jQuery实现的数值范围range2dslider选取插件特效多款代码分享
Aug 27 Javascript
JavaScript  cookie 跨域访问之广告推广
Apr 20 Javascript
异步加载JS、CSS代码(推荐)
Jun 15 Javascript
JS实现颜色梯度与渐变效果完整实例
Dec 30 Javascript
ES6中Proxy代理用法实例浅析
Apr 06 Javascript
如何抽象一个Vue公共组件
Oct 17 Javascript
javascript关于“时间”的一次探索
Jul 24 Javascript
vue 解决data中定义图片相对路径页面不显示的问题
Aug 13 Javascript
Vue常用API、高级API的相关总结
Feb 02 Vue.js
基于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
PHP flush()与ob_flush()的区别详解
2013/06/03 PHP
PHP实现接收二进制流转换成图片的方法
2017/01/10 PHP
laravel学习笔记之模型事件的几种用法示例
2017/08/15 PHP
JavaScript资源预加载组件和滑屏组件的使用推荐
2016/03/10 Javascript
常用的javascript设计模式
2017/01/11 Javascript
移动端点击态处理的三种实现方式
2017/01/12 Javascript
JS实现JSON.stringify的实例代码讲解
2017/02/07 Javascript
详解Vue 非父子组件通信方法(非Vuex)
2017/05/24 Javascript
JS实现把一个页面层数据传递到另一个页面的两种方式
2018/08/13 Javascript
JS中的模糊查询功能
2019/12/08 Javascript
JavaScript设计模式--简单工厂模式定义与应用案例详解
2020/05/23 Javascript
maptalks+three.js+vue webpack实现二维地图上贴三维模型操作
2020/08/10 Javascript
在js文件中引入(调用)另一个js文件的三种方法
2020/09/11 Javascript
[37:22]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第一局
2016/02/28 DOTA
Python中集合的内建函数和内建方法学习教程
2015/08/19 Python
python实现网站的模拟登录
2016/01/04 Python
查看django执行的sql语句及消耗时间的两种方法
2018/05/29 Python
Python 函数list&read&seek详解
2019/08/28 Python
python2.7实现复制大量文件及文件夹资料
2019/08/31 Python
使用Python FastAPI构建Web服务的实现
2020/06/08 Python
Python爬虫实现HTTP网络请求多种实现方式
2020/06/19 Python
html5嵌入内容_动力节点Java学院整理
2017/07/07 HTML / CSS
Fanatics法国官网:美国体育电商
2019/08/27 全球购物
什么是makefile? 如何编写makefile?
2013/01/02 面试题
学校安全检查制度
2014/01/27 职场文书
庆元旦广播稿
2014/02/10 职场文书
初婚未育证明样本
2014/10/24 职场文书
晋江市委常委班子四风问题整改工作方案
2014/10/26 职场文书
兼职安全员岗位职责
2015/02/15 职场文书
民主评议党员个人自我评价
2015/03/03 职场文书
医院感染管理制度
2015/08/05 职场文书
新西兰:最新留学学习计划书写作指南
2019/07/15 职场文书
windows下快速安装nginx并配置开机自启动的方法
2021/05/11 Servers
pycharm 如何查看某一函数源码的快捷键
2021/05/12 Python
Python爬取英雄联盟MSI直播间弹幕并生成词云图
2021/06/01 Python
CSS实现渐变色边框(Gradient borders)的5种方法
2022/03/25 HTML / CSS