深入学习jquery源码之ajaxSetup()

ajaxComplete(callback)

概述:

AJAX 请求完成时执行函数。Ajax 事件。

XMLHttpRequest 对象和设置作为参数传递给回调函数。

参数:

callback Function

待执行函数

使用

AJAX 请求完成时执行函数。

$("#msg").ajaxComplete(function(event,request, settings){$(this).append("<li>请求完成.</li>");});

当 AJAX 请求正在进行时显示“正在加载”的指示:

$("#txt").ajaxStart(function(){$("#wait").css("display","block");
});
$("#txt").ajaxComplete(function(){$("#wait").css("display","none");
});

ajaxError(callback)

概述:

AJAX 请求发生错误时执行函数。Ajax 事件。

XMLHttpRequest 对象和设置作为参数传递给回调函数。捕捉到的错误可作为最后一个参数传递。

参数:

callback Function

待执行函数

function (event, XMLHttpRequest, ajaxOptions, thrownError) {// thrownError 只有当异常发生时才会被传递this; // 监听的 dom 元素
}

使用:

AJAX 请求失败时显示信息。

$("#msg").ajaxError(function(event,request, settings){$(this).append("<li>出错页面:" + settings.url + "</li>");
});

ajaxSend(callback)

概述:

AJAX 请求发送前执行函数。Ajax 事件。

XMLHttpRequest 对象和设置作为参数传递给回调函数。

参数:

callback Function

待执行函数

使用:

AJAX 请求发送前显示信息。

$("#msg").ajaxSend(function(evt, request, settings){$(this).append("<li>开始请求: " + settings.url + "</li>");});

ajaxStart(callback)

概述:

AJAX 请求开始时执行函数。Ajax 事件。

参数:

callback Function

待执行函数

说明

AJAX 请求开始时显示信息。

$("#loading").ajaxStart(function(){$(this).show();});

ajaxStop(callback)

概述:

AJAX 请求结束时执行函数。Ajax 事件

参数:

callback Function

待执行函数

使用:

AJAX 请求结束后隐藏信息。

$("#loading").ajaxStop(function(){$(this).hide();});

ajaxSuccess(callback)

概述:

AJAX 请求成功时执行函数。Ajax 事件。

XMLHttpRequest 对象和设置作为参数传递给回调函数。

参数:

callback Function

待执行函数

使用:

当 AJAX 请求成功后显示消息。

 $("#msg").ajaxSuccess(function(evt, request, settings){$(this).append("<li>请求成功!</li>");});

ajaxSetup([options])

概述:

设置全局 AJAX 默认选项。

参数:

options Object

选项设置。所有设置项均为可选设置。.

说明:

设置 AJAX 请求默认地址为 "/xmlhttp/",禁止触发全局 AJAX 事件,用 POST 代替默认 GET 方法。其后的 AJAX 请求不再设置任何选项参数。

$.ajaxSetup({url: "/xmlhttp/",global: false,type: "POST"
});
$.ajax({ data: myData });

ajaxSetup() 方法为将来的 AJAX 请求设置默认值。

(function (window, $) {/**统一处置ajax 的一些事件 和参数*/function _ajaxSetup() {$(document).ajaxStart(function () {window.ajaxruning = true;$Core.IsAjaxTimeOut = false;$Core.Loading.AjaxLoadingStart();//console.log("documentStart");}).ajaxStop(function () {window.ajaxruning = false;$Core.Loading.HideAjaxLoading();//console.log("documentStop");}).ajaxError(function (event, XMLHttpRequest, ajaxOptions, thrownError) {$Core.Loading.HideAll();if (thrownError === "timeout") {$Core.IsAjaxTimeOut = true;showError(ajaxOptions, "timeout", "请求超时,请检查您的网络连接!");return;}showError(ajaxOptions, XMLHttpRequest.status, XMLHttpRequest.responseText);});//这里设置统一的头信息$.ajaxSetup({beforeSend: function (xhr) {//alert(this.url);if (this.url) {if (!this.url.contains("http"))this.url = $Core.SERVICEPATH() + this.url;}},//dataType: "josn",headers: {'token': $Core.USER().TOKEN,'appid': $Core.APPID},contentType: 'application/x-www-form-urlencoded; charset=UTF-8',timeout: $Core.Config.ajaxTimeout,cache: false,//xhrFields: {//    withCredentials: true//},//dataType:"json",crossDomain: true,complete: function (XHR, TS) {if (TS === "success") {var result = XHR.responseJSON;if (result && result.code) {if (result.code == "500") {showError(this, 500, result.msg);return false;}else if (result.code == "401") { //登录信息失败showError(this, 401, "您的登录信息已经失效,请重新登录系统!", $Core.TimeOut);return false;}else if (result.code == "403") { //资源信息失败return false;}}}//console.log(XHR, TS);}});}/*************************************ajaxEnd***************************************/_ajaxSetup();})(window, jQuery);
function showError(ajaxOpts, errorCode, errorMsg, callback) {var topwin = window;if (topwin.iserrorshow) return;topwin.iserrorshow = true;var msg = "{1} <hr />错误号:{0} <br /> 请求地址:{2}".format(errorCode,$.string.isNullOrWhiteSpace(errorMsg) ? "系统出现了一个未指明的错误,如果该问题重复出现,请联系您的系统管理员并反馈该故障。": errorMsg,ajaxOpts.url);if (topwin.layer) {topwin.layer.open({title: '错误提醒',type: 0,fixed: false, //不固定maxmin: false,content: msg,end: function (index, layero) {winClose();}});}else {alert(msg);winClose();}var winClose = function () {topwin.iserrorshow = false;if (callback !== undefined)callback();};}//禁止表单回车自动提交
$(function () {$("form input").keydown(function () {if (event.keyCode == 13) { return false };});
});

设置请求头信息

<script>$.ajaxSetup({//dataType: "josn",headers: {'appid': $Core.APPID},contentType: 'application/x-www-form-urlencoded; charset=UTF-8',timeout: 10000,cache: false,//xhrFields: {//    withCredentials: true//},crossDomain: true});$(document).ajaxError(function (event, XMLHttpRequest, ajaxOptions, thrownError) {$Core.Loading.HideAll();if (thrownError === "timeout") {alert("网络连接超时,请稍后重试!")return;}alert("网络连接异常,请稍后重试!" + XMLHttpRequest.responseText);});$(function () {//var user = $Core.USER();//if (user != null) {//    location.href = "main.html";//    return;//}$("#pageloading").fadeOut();// $Core.Loading.HideAll();//login$("#btnLogin").click(function () {var ucode = $("#userCode").val();var pass = $("#passWord").val();$.post($Core.SERVICEROOT()+"login", { usercode: ucode, userpass: pass },function (result) {console.log(result);if (result.code === 0) {var udata = result.data;var userinfo = {};userinfo.USERID = udata.userId;userinfo.USERNAME = udata.userName;userinfo.DEPID = udata.orgId;userinfo.DEPNAME = udata.orgName;userinfo.OrgManageDataCode = udata.orgManageDataCode;userinfo.TOKEN = udata.token;userinfo.orgLevel = udata.orgLevel;//userinfo.RESOURCELIST = udata.resourceList;userinfo.OrgDataCode = udata.orgDataCode;$Core.Login(userinfo);location.href = "main.html";} else {alert(result.msg);}});});});
</script>

获取请求头信息中的参数

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;@RequestMapping(value="/login")public AssembleJSON login(HttpServletRequest request, HttpServletResponse response){String usercode = request.getParameter("usercode");String userpass = request.getParameter("userpass");String appid = request.getHeader("appid");
}

jquery源码

    // A special extend for ajax options// that takes "flat" options (not to be deep extended)// Fixes #9887function ajaxExtend(target, src) {var deep, key,flatOptions = jQuery.ajaxSettings.flatOptions || {};for (key in src) {if (src[key] !== undefined) {(flatOptions[key] ? target : (deep || (deep = {})))[key] = src[key];}}if (deep) {jQuery.extend(true, target, deep);}return target;}jQuery.extend({// Counter for holding the number of active queriesactive: 0,// Last-Modified header cache for next requestlastModified: {},etag: {},ajaxSettings: {url: ajaxLocation,type: "GET",isLocal: rlocalProtocol.test(ajaxLocParts[1]),global: true,processData: true,async: true,contentType: "application/x-www-form-urlencoded; charset=UTF-8",/*timeout: 0,data: null,dataType: null,username: null,password: null,cache: null,throws: false,traditional: false,headers: {},*/accepts: {"*": allTypes,text: "text/plain",html: "text/html",xml: "application/xml, text/xml",json: "application/json, text/javascript"},contents: {xml: /xml/,html: /html/,json: /json/},responseFields: {xml: "responseXML",text: "responseText",json: "responseJSON"},// Data converters// Keys separate source (or catchall "*") and destination types with a single spaceconverters: {// Convert anything to text"* text": String,// Text to html (true = no transformation)"text html": true,// Evaluate text as a json expression"text json": jQuery.parseJSON,// Parse text as xml"text xml": jQuery.parseXML},// For options that shouldn't be deep extended:// you can add your own custom options here if// and when you create one that shouldn't be// deep extended (see ajaxExtend)flatOptions: {url: true,context: true}},// Creates a full fledged settings object into target// with both ajaxSettings and settings fields.// If target is omitted, writes into ajaxSettings.ajaxSetup: function (target, settings) {return settings ?// Building a settings objectajaxExtend(ajaxExtend(target, jQuery.ajaxSettings), settings) :// Extending ajaxSettingsajaxExtend(jQuery.ajaxSettings, target);}});});

深入学习jquery源码之ajaxSetup()相关推荐

  1. 深入学习jquery源码之高德地图组件的使用

    深入学习jquery源码之高德地图组件的使用 高德地图组件是一类高度模块化的LBS服务组件,开发者通过调用相应标签便可轻松实现诸如在地图上标注点.查找附近poi.公交/驾车线路规划等功能.该类组件仅针 ...

  2. 深入学习jquery源码之queue()与dequeue()

    深入学习jquery源码之queue()与dequeue() queue(element,[queueName]) 概述 显示或操作在匹配元素上执行的函数队列 参数 element,[queueNam ...

  3. 深入学习jquery源码之attr()与removeAttr()

    深入学习jquery源码之attr()与removeAttr() attr(name|properties|key,value|fn) 概述 设置或返回被选元素的属性值. 参数 name String ...

  4. 深入学习jquery源码之addClass()和toggleClass()与hasClass()

    深入学习jquery源码之addClass()和toggleClass()与hasClass() addClass(class|fn) 概述 为每个匹配的元素添加指定的类名. 参数 class Str ...

  5. 深入学习jquery源码之jQuery的选择器引擎Sizzle(一)

    深入学习jquery源码之jQuery的选择器引擎Sizzle Sizzle是一个纯javascript CSS选择器引擎.jquery1.3开始使用sizzle,Sizzle一反传统采取了相反的Ri ...

  6. 学习 jQuery 源码整体架构,打造属于自己的 js 类库

    虽然现在基本不怎么使用 jQuery了,但 jQuery流行 10多年的 JS库,还是有必要学习它的源码的.也可以学着打造属于自己的 js类库,求职面试时可以增色不少. 本文章学习的是 v3.4.1版 ...

  7. 妙味课堂:一起学习jQuery源码【逐行分析jQuery源码的奥秘】(妙味课堂笔记)-- 框架接口(1-3)

    jQuery 的学习版本为: 2.0.3 匿名函数 匿名函数自执行,目的是防止变量污染 (function(window,undefined){})(window); 内层代码块分析 (functio ...

  8. Jquery源码分析-整体结构

    最近在学习Jquery的最新的源码,Jquery-3.3.1版本.网上有很多对jquery解析的文章.但是我还是要自己去尝试着看一篇jquery的源码.本系列博客用来记录其中的过程,并同大家分享.本次 ...

  9. 学习 vuex 源码整体架构,打造属于自己的状态管理库

    前言 这是学习源码整体架构第五篇.整体架构这词语好像有点大,姑且就算是源码整体结构吧,主要就是学习是代码整体结构,不深究其他不是主线的具体函数的实现.本篇文章学习的是实际仓库的代码. 其余四篇分别是: ...

最新文章

  1. 虚拟机用户配置root权限
  2. 苹果的新Siri:不男,也不女
  3. 使用keil判断ARM的冷启动和热启动的方法
  4. Matplotlib Tutorial(译)
  5. python 通过 实例方法 名字的字符串调用方法
  6. 百度模糊搜索怎么实现_百度搜索广告是什么?百度搜索竞价广告投放推广效果怎么样?...
  7. golang 根据基础的url下载静态服务器上所有的文件
  8. centos一键清理磁盘空间_如何清理 Docker 占用的磁盘空间
  9. 多个python文件打包成exe_pyinstaller打包python文件成exe(原理.安装.问题)
  10. Oracle监听启动扫描sqlnet,监听中sqlnet.ora的作用
  11. HDU1042 n!【大数+万进制】
  12. python中文意思-请问在python中**是啥什么意思?
  13. Lightroom Classic mac版怎样创建全景图和HDR全景图?
  14. linux下c程序调用reboot函数实现直接重启【转】
  15. Oracle ORA-03113错误解决办法
  16. 编写项目工作说明书(SOW)
  17. 寻仙服务器要维护多久,新寻仙正式服5.0.6.1更新公告
  18. OPENGL纹理贴图作业分享
  19. 现在的BAT,就是曾经的外企
  20. fir.im Weekly - 揭秘直播移动 APP 技术实现

热门文章

  1. 【装机知识】硬盘知识整理
  2. C++获取重载函数的地址
  3. 自建本地服务器,如何搭建及使用本地服务器
  4. SVN本地服务器搭建教程
  5. 有哪些好看颜值高的蓝牙耳机?高颜值蓝牙耳机排行榜
  6. PANet训练自己的数据(VIA标注)
  7. Android AppLinks 接入
  8. 蜂群文化:新媒体营销的优质原创服务商
  9. 体验Windows 2008 R2的RemoteApp
  10. ubuntu——火狐浏览器报错:代理服务器拒绝连接