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查找dom的几种方法效率详解
May 17 jQuery
jQuery日期范围选择器附源码下载
May 23 jQuery
jquery实现一个全局计时器(商城可用)
Jun 30 jQuery
jQuery动态添加li标签并添加属性和绑定事件方法
Feb 24 jQuery
vue-cli 引入jQuery,Bootstrap,popper的方法
Sep 03 jQuery
jQuery实现鼠标移入移出事件切换功能示例
Sep 06 jQuery
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
Nov 07 jQuery
基于jQuery实现可编辑的表格
Dec 11 jQuery
jQuery实现中奖播报功能(让文本滚动起来) 简单设置数值即可
Mar 20 jQuery
jQuery 移除事件的方法
Jun 20 jQuery
jQuery实现B2B网站后台管理系统侧导航
Jul 08 jQuery
jQuery实现雪花飘落效果
Aug 02 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
windows7下安装php的imagick和imagemagick扩展教程
2014/07/04 PHP
PHP模板引擎Smarty中变量的使用方法示例
2016/04/11 PHP
javascript parseInt 大改造
2009/09/27 Javascript
一步一步制作jquery插件Tabs实现过程
2010/07/06 Javascript
Fastest way to build an HTML string(拼装html字符串的最快方法)
2011/08/20 Javascript
javascript实现div的拖动并调整大小类似qq空间个性编辑模块
2012/12/12 Javascript
使用text方法获取Html元素文本信息示例
2014/09/01 Javascript
判断字符串的长度(优化版)中文占两个字符
2014/10/30 Javascript
浅谈bootstrap源码分析之tab(选项卡)
2016/06/06 Javascript
BootStrap下拉菜单和滚动监听插件实现代码
2016/09/26 Javascript
ES6新数据结构Map功能与用法示例
2017/03/31 Javascript
vue实现路由监听和参数监听
2019/10/29 Javascript
vue获取form表单的值示例
2019/10/29 Javascript
JS通用方法触发点击事件代码实例
2020/02/17 Javascript
js实现九宫格抽奖
2020/03/19 Javascript
node.js 如何监视文件变化
2020/09/01 Javascript
vue使用openlayers实现移动点动画
2020/09/24 Javascript
Javascript中window.name属性详解
2020/11/19 Javascript
详解Python实现多进程异步事件驱动引擎
2017/08/25 Python
100行python代码实现跳一跳辅助程序
2018/01/15 Python
python破解zip加密文件的方法
2018/05/31 Python
Python 使用PIL中的resize进行缩放的实例讲解
2018/08/03 Python
django数据关系一对多、多对多模型、自关联的建立
2019/07/24 Python
python如何通过twisted搭建socket服务
2020/02/03 Python
python3 xpath和requests应用详解
2020/03/06 Python
解决pip install psycopg2出错问题
2020/07/09 Python
使用matplotlib的pyplot模块绘图的实现示例
2020/07/12 Python
一文带你掌握Pyecharts地理数据可视化的方法
2021/02/06 Python
Python3爬虫RedisDump的安装步骤
2021/02/20 Python
野兽派官方旗舰店:THE BEAST 野兽派
2016/08/05 全球购物
美国婴儿用品及配件购买网站:Munchkin
2019/04/03 全球购物
化妆品促销方案
2014/02/24 职场文书
习近平在党的群众路线教育实践活动总结大会上的讲话
2014/10/21 职场文书
礼仪培训心得体会
2016/01/22 职场文书
MySQL中使用or、in与union all在查询命令下的效率对比
2021/05/26 MySQL
Python爬虫框架之Scrapy中Spider的用法
2021/06/28 Python