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插件FusionCharts实现的MSBar3D图效果示例【附demo源码】
Mar 23 jQuery
jquery.uploadifive插件怎么解决上传限制图片或文件大小问题
May 08 jQuery
基于JQuery的Ajax方法使用详解
Aug 16 jQuery
jQuery 禁止表单用户名、密码自动填充功能
Oct 30 jQuery
jquery动态添加以及遍历option并获取特定样式名称的option方法
Jan 29 jQuery
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
Mar 28 jQuery
jQuery实现监听下拉框选中内容发生改变操作示例
Jul 13 jQuery
解决jquery的ajax调取后端数据成功却渲染失败的问题
Aug 08 jQuery
jquery无缝图片轮播组件封装
Nov 25 jQuery
jQuery实现动态添加和删除input框实例代码
Mar 26 jQuery
jQuery实现验证用户登录
Dec 10 jQuery
jQuery 选择器用法实例分析【prev + next】
May 22 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
《斗罗大陆》六翼天使武魂最强,为什么老千家不是上三宗?
2020/03/02 国漫
用PHP+java实现自动新闻滚动窗口
2006/10/09 PHP
模仿OSO的论坛(一)
2006/10/09 PHP
phpadmin如何导入导出大数据文件及php.ini参数修改
2013/02/18 PHP
javascript 控制弹出窗口
2007/04/10 Javascript
js 颜色选择器(兼容firefox)
2009/03/05 Javascript
JavaScript Event学习第五章 高级事件注册模型
2010/02/07 Javascript
JQuery 获得绝对,相对位置的坐标方法
2010/02/09 Javascript
jquery键盘事件使用介绍
2011/11/01 Javascript
jquery load事件(callback/data)使用方法及注意事项
2013/02/06 Javascript
JQuery中对Select的option项的添加、删除、取值
2013/08/25 Javascript
javascript操作referer详细解析
2014/03/10 Javascript
用NODE.JS中的流编写工具是要注意的事项
2016/03/01 Javascript
JS识别浏览器类型(电脑浏览器和手机浏览器)
2016/11/18 Javascript
详解vue2路由vue-router配置(懒加载)
2017/04/08 Javascript
nodejs multer实现文件上传与下载
2017/05/10 NodeJs
详解用node编写自己的cli工具
2017/05/23 Javascript
JavaScript实现设置默认日期范围为最近40天的方法分析
2017/07/12 Javascript
解决layui 复选框等内置控件不显示的问题
2018/08/14 Javascript
VSCode写vue项目一键生成.vue模版,修改定义其他模板的方法
2020/04/17 Javascript
Python动态加载模块的3种方法
2014/11/22 Python
Python实现二分法算法实例
2015/02/02 Python
Python中标准库OS的常用方法总结大全
2017/07/19 Python
启动targetcli时遇到错误解决办法
2017/10/26 Python
Python3实现带附件的定时发送邮件功能
2020/12/22 Python
对numpy中向量式三目运算符详解
2018/10/31 Python
Python 如何提高元组的可读性
2019/08/26 Python
SISLEY希思黎官方旗舰店:享誉全球的奢华植物美容品牌
2018/04/25 全球购物
SOA面试题:如何在SOA中实现松耦合
2013/07/21 面试题
法学专业毕业生自荐信
2014/06/11 职场文书
环保公益策划方案
2014/08/15 职场文书
自查自纠整改报告
2014/11/06 职场文书
公务员个人年终总结
2015/02/12 职场文书
医务人员岗前培训心得体会
2016/01/08 职场文书
关于感恩的作文
2019/08/26 职场文书
HTML+VUE分页实现炫酷物联网大屏功能
2021/05/27 Vue.js