原生和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 相关文章推荐
IE中jquery.form中ajax提交没反应解决方法分享
Sep 11 Javascript
解析js中获得父窗口链接getParent方法以及各种打开窗口的方法
Jun 19 Javascript
深入分析JQuery和JavaScript的异同
Oct 23 Javascript
js自定义select下拉框美化特效
May 12 Javascript
原生JS实现的放大镜效果实例代码
Oct 15 Javascript
jquery将标签元素的高设为屏幕的百分比
Apr 19 jQuery
基于BootStrap实现简洁注册界面
Jul 20 Javascript
使用Object.defineProperty如何巧妙找到修改某个变量的准确代码位置
Nov 02 Javascript
微信小程序 wx:for 与 wx:for-items 与 wx:key的正确用法
May 19 Javascript
vue webpack build资源相对路径的问题及解决方法
Jun 04 Javascript
解决vue中el-tab-pane切换的问题
Jul 19 Javascript
Vue.js中v-bind指令的用法介绍
Mar 13 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 远程图片保存到本地的函数类
2008/12/08 PHP
php实现12306余票查询、价格查询示例
2014/04/17 PHP
php从字符串创建函数的方法
2015/03/16 PHP
yii2缓存Caching基本用法示例
2016/07/18 PHP
PHP实现的mongoDB数据库操作类完整实例
2018/04/10 PHP
JavaScript 新手24条实用建议[TUTS+]
2009/06/21 Javascript
jQuery中setTimeout的几种使用方法小结
2013/04/07 Javascript
jquery $.each() 使用小探
2013/08/23 Javascript
jquery ajax 如何向jsp提交表单数据
2015/08/23 Javascript
继续学习javascript闭包
2015/12/03 Javascript
基于jQuery实现选取月份插件附源码下载
2015/12/28 Javascript
AngularJS中的路由使用及实现代码
2017/10/09 Javascript
vue 实现通过手机发送短信验证码注册功能
2018/04/19 Javascript
如何实现一个webpack模块解析器
2018/10/24 Javascript
JS函数节流和防抖之间的区分和实现详解
2019/01/11 Javascript
[01:13:59]LGD vs Mineski Supermajor 胜者组 BO3 第三场 6.5
2018/06/06 DOTA
Python写入数据到MP3文件中的方法
2015/07/10 Python
Python3.6 Schedule模块定时任务(实例讲解)
2017/11/09 Python
PyCharm 常用快捷键和设置方法
2017/12/20 Python
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
2018/01/30 Python
Python SqlAlchemy动态添加数据表字段实例解析
2018/02/07 Python
使用Python通过win32 COM打开Excel并添加Sheet的方法
2018/05/02 Python
使用pandas的DataFrame的plot方法绘制图像的实例
2018/05/24 Python
浅谈python中统计计数的几种方法和Counter详解
2019/11/07 Python
python中的subprocess.Popen()使用详解
2019/12/25 Python
DRF框架API版本管理实现方法解析
2020/08/21 Python
css3实现平移效果(transfrom:translate)的示例
2020/11/13 HTML / CSS
HTML5资源预加载(Link prefetch)详细介绍(给你的网页加速)
2014/05/07 HTML / CSS
幼儿园秋游活动方案
2014/01/21 职场文书
检查接待方案
2014/02/27 职场文书
消防安全标语
2014/06/07 职场文书
销售活动策划方案
2014/08/26 职场文书
2015年世界环境日活动方案
2015/05/05 职场文书
挂职锻炼工作总结2015
2015/05/28 职场文书
基于Redis的List实现特价商品列表功能
2021/08/30 Redis
Windows 11要来了?微软文档揭示Win11太阳谷 / Win10有两个不同版本
2021/11/21 数码科技