jQuery使用ajax_动力节点Java学院整理


Posted in jQuery onJuly 05, 2017

用JavaScript写AJAX前面已经介绍过了,主要问题就是不同浏览器需要写不同代码,并且状态和错误处理写起来很麻烦。

用jQuery的相关对象来处理AJAX,不但不需要考虑浏览器问题,代码也能大大简化。

ajax

jQuery在全局对象jQuery(也就是$)绑定了ajax()函数,可以处理AJAX请求。ajax(url, settings)函数需要接收一个URL和一个可选的settings对象,常用的选项如下:

async:是否异步执行AJAX请求,默认为true,千万不要指定为false
method:发送的Method,缺省为'GET',可指定'POST'、'PUT'等;
contentType:发送POST请求的格式,默认值为'application/x-www-form-urlencoded; charset=UTF-8',也可以指定为text/plain、application/json
data:发送的数据,可以是字符串、数组或object。如果是GET请求,data将被转换成query附加到URL上,如果是POST请求,根据contentType把data序列化成合适的格式;
headers:发送的额外的HTTP头,必须是一个object;
dataType:接收的数据格式,可以指定为'html'、'xml'、'json'、'text'等,缺省情况下根据响应的Content-Type猜测。

下面的例子发送一个GET请求,并返回一个JSON格式的数据:

var jqxhr = $.ajax('/api/categories', {
  dataType: 'json'
});
// 请求已经发送了

不过,如何用回调函数处理返回的数据和出错时的响应呢?

还记得Promise对象吗?jQuery的jqXHR对象类似一个Promise对象,我们可以用链式写法来处理各种回调:

'use strict';

function ajaxLog(s) {
  var txt = $('#test-response-text');
  txt.val(txt.val() + '\n' + s);
}

$('#test-response-text').val('');
var jqxhr = $.ajax('/api/categories', {
  dataType: 'json'
}).done(function (data) {
  ajaxLog('成功, 收到的数据: ' + JSON.stringify(data));
}).fail(function (xhr, status) {
  ajaxLog('失败: ' + xhr.status + ', 原因: ' + status);
}).always(function () {
  ajaxLog('请求完成: 无论成功或失败都会调用');
});

get

对常用的AJAX操作,jQuery提供了一些辅助方法。由于GET请求最常见,所以jQuery提供了get()方法,可以这么写:

var jqxhr = $.get('/path/to/resource', {
  name: 'Bob Lee',
  check: 1
});

第二个参数如果是object,jQuery自动把它变成query string然后加到URL后面,实际的URL是:

/path/to/resource?name=Bob%20Lee&check=1

这样我们就不用关心如何用URL编码并构造一个query string了。

post

post()get()类似,但是传入的第二个参数默认被序列化为application/x-www-form-urlencoded

var jqxhr = $.post('/path/to/resource', {
  name: 'Bob Lee',
  check: 1
});

实际构造的数据name=Bob%20Lee&check=1作为POST的body被发送。

getJSON

由于JSON用得越来越普遍,所以jQuery也提供了getJSON()方法来快速通过GET获取一个JSON对象:

var jqxhr = $.getJSON('/path/to/resource', {
  name: 'Bob Lee',
  check: 1
}).done(function (data) {
  // data已经被解析为JSON对象了
});

安全限制

jQuery的AJAX完全封装的是JavaScript的AJAX操作,所以它的安全限制和前面讲的用JavaScript写AJAX完全一样。
如果需要使用JSONP,可以在ajax()中设置jsonp: 'callback',让jQuery实现JSONP跨域加载数据。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
jQuery实现jQuery-form.js实现异步上传文件
Apr 28 jQuery
jQuery使用eraser.js插件实现擦除、刮刮卡效果的方法【附eraser.js下载】
Apr 28 jQuery
Angular2使用jQuery的方法教程
May 28 jQuery
jquery实现放大镜简洁代码(推荐)
Jun 08 jQuery
jQuery获取table表中的td标签(实例讲解)
Jul 28 jQuery
jquery动态添加以及遍历option并获取特定样式名称的option方法
Jan 29 jQuery
jQuery实现百度图片移入移出内容提示框上下左右移动的效果
Jun 05 jQuery
Jquery和CSS实现选择框重置按钮功能
Nov 08 jQuery
jQuery中实现text()的方法
Apr 04 jQuery
jquery实现垂直无限轮播的方法分析
Jul 16 jQuery
JS/jQuery实现超简单的Table表格添加,删除行功能示例
Jul 31 jQuery
JavaScript枚举选择jquery插件代码实例
Nov 17 jQuery
jQuery扩展_动力节点Java学院整理
Jul 05 #jQuery
jQuery选择器_动力节点Java学院整理
Jul 05 #jQuery
jQuery事件_动力节点Java学院整理
Jul 05 #jQuery
jQuery修改DOM结构_动力节点Java学院整理
Jul 05 #jQuery
jQuery实现返回顶部按钮和scroll滚动功能[带动画效果]
Jul 05 #jQuery
jquery拖动改变div大小
Jul 04 #jQuery
jQuery实现动态给table赋值的方法示例
Jul 04 #jQuery
You might like
德劲1107的电路分析与打磨
2021/03/02 无线电
PHP优于Node.js的五大理由分享
2012/09/15 PHP
php对csv文件的读取,写入,输出下载操作详解
2013/08/10 PHP
php获取从百度、谷歌等搜索引擎进入网站关键词的方法
2015/07/08 PHP
PHP6连接SQLServer2005的三部曲
2016/04/15 PHP
Yii2配置Nginx伪静态的方法
2017/05/05 PHP
JS从一组数据中找到指定的单条数据的方法
2016/06/02 Javascript
jQuery Ajax页面局部加载方法汇总
2016/06/02 Javascript
原生 JS Ajax,GET和POST 请求实例代码
2016/06/08 Javascript
AngularJS教程之简单应用程序示例
2016/08/16 Javascript
JS实现简单的二元方程计算器功能示例
2017/01/03 Javascript
纯js模仿windows系统日历
2017/02/04 Javascript
jQuery实现Table表格隔行变色及高亮显示当前选择行效果示例
2017/02/14 Javascript
jQuery发请求传输中文参数乱码问题的解决方案
2018/05/22 jQuery
Vue通过ref父子组件拿值方法
2018/09/12 Javascript
如何实现一个webpack模块解析器
2018/10/24 Javascript
node.js express框架简介与实现
2019/07/23 Javascript
JavaScript实现身份证验证代码实例
2019/08/26 Javascript
vue.js中ref及$refs的使用方法解析
2019/10/08 Javascript
vue模块移动组件的实现示例
2020/05/20 Javascript
JavaScript TAB栏切换效果的示例
2020/11/05 Javascript
Vue仿Bibibili首页的问题
2021/01/21 Vue.js
Python基于动态规划算法解决01背包问题实例
2017/12/06 Python
Python操作word常见方法示例【win32com与docx模块】
2018/07/17 Python
利用pandas进行大文件计数处理的方法
2018/07/25 Python
Python小游戏之300行代码实现俄罗斯方块
2019/01/04 Python
django迁移数据库错误问题解决
2019/07/29 Python
python2爬取百度贴吧指定关键字和图片代码实例
2019/08/14 Python
python基于pdfminer库提取pdf文字代码实例
2019/08/15 Python
在django模板中实现超链接配置
2019/08/21 Python
Python操控mysql批量插入数据的实现方法
2020/10/27 Python
HTML5之web workers_动力节点Java学院整理
2017/07/17 HTML / CSS
财务管理专业推荐信
2013/11/19 职场文书
户籍证明模板
2014/09/28 职场文书
自我评价优缺点范文
2015/03/11 职场文书
入团申请书格式
2019/06/20 职场文书