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中使用attr(), prop(), val()获取value的异同
Apr 25 jQuery
jQuery 实现鼠标画框并对框内数据选中的实例代码
Aug 29 jQuery
jquery之基本选择器practice(实例讲解)
Sep 30 jQuery
关于jQuery里prev()的简单操作代码
Oct 27 jQuery
如何快速解决JS或Jquery ajax异步跨域的问题
Jan 08 jQuery
jQuery实现标签子元素的添加和赋值方法
Feb 24 jQuery
深入浅析angular和vue还有jquery的区别
Aug 13 jQuery
jquery将信息遍历到界面上实例代码
Jan 21 jQuery
jQuery实现的上拉刷新功能组件示例
May 01 jQuery
jQuery HTML获取内容和属性操作实例分析
May 20 jQuery
jQuery实现飞机大战小游戏
Jul 05 jQuery
jQuery实现可以扩展的日历
Dec 01 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
PHP音乐采集(部分代码)
2007/02/14 PHP
解析php中的escape函数
2013/06/29 PHP
学习php分页代码实例
2013/10/24 PHP
php数组排序usort、uksort与sort函数用法
2014/11/17 PHP
PHP控制前台弹出对话框的实现方法
2016/08/21 PHP
PHP中的使用curl发送请求(GET请求和POST请求)
2017/02/08 PHP
JavaScript 编程引入命名空间的方法
2007/06/29 Javascript
基于jquery的跨域调用文件
2010/11/19 Javascript
在多个页面使用同一个HTML片段《续》
2011/03/04 Javascript
jQuery EasyUI API 中文文档 - MenuButton菜单按钮使用介绍
2011/10/06 Javascript
Javascript根据指定下标或对象删除数组元素
2012/12/21 Javascript
jQuery文件上传控件 Uploadify 详解
2016/06/20 Javascript
Bootstrap列表组学习使用
2017/02/09 Javascript
vue.js动画中的js钩子函数的实现
2018/07/06 Javascript
react项目如何使用iconfont的方法步骤
2019/03/13 Javascript
Vue实现根据hash高亮选项卡
2019/05/27 Javascript
mock.js模拟前后台交互
2019/07/25 Javascript
layui数据表格 table.render 报错的解决方法
2019/09/29 Javascript
Nodejs实现微信分账的示例代码
2021/01/19 NodeJs
[05:06]DOTA2-DPC中国联赛 正赛 VG vs Magma选手采访
2021/03/11 DOTA
Python中实现常量(Const)功能
2015/01/28 Python
Python实现的数据结构与算法之基本搜索详解
2015/04/22 Python
python模块简介之有序字典(OrderedDict)
2016/12/01 Python
numpy.random.seed()的使用实例解析
2018/02/03 Python
Python关于拓扑排序知识点讲解
2021/01/04 Python
使用Python爬取小姐姐图片(beautifulsoup法)
2021/02/11 Python
Why do we need Unit test
2013/01/03 面试题
异步传递消息系统的作用
2016/05/01 面试题
婚礼主持词开场白
2014/03/13 职场文书
幼儿园教师自我鉴定
2014/03/20 职场文书
幼儿园大班区域活动总结
2014/07/09 职场文书
建筑管理专业求职信
2014/07/28 职场文书
小学家长学校培训材料
2014/08/24 职场文书
工程技术员岗位职责
2015/04/11 职场文书
个人道歉信大全
2019/04/11 职场文书
java固定大小队列的几种实现方式详解
2021/07/15 Java/Android