Extjs中对ajax中request方法的重写,对请求的过滤

涛哥实力派,是一匹千里马,可惜了水货上司。

失败发生在彻底的放弃之后。我对我的上司失望极了。

公司最近在完成一个项目,项目已经进行到尾声了,还没有进行对回话为空进行过滤。在涛哥提出后,上司研究了半天解决不了,最后丢给涛哥解决。虽说解决问题是每个人的义务,不是每个人的责任。但涛哥还是抱着学习的态度,解决问题。最终得以解决。直接上重新的代码:

Ext.override(Ext.Ajax, {
	request: function(options) {
		options = options || {};
		if(options.url&&options.url.indexOf('login.jsp')>-1){
			location.href='http://download.csdn.net/detail/xmt1139057136/7113051';
			return;
		}
		var me = this,
			scope = options.scope || window,
			username = options.username || me.username,
			password = options.password || me.password || '',
			async,
			requestOptions,
			request,
			headers,
			xhr;
		if (me.fireEvent('beforerequest', me, options) !== false) {
			requestOptions = me.setOptions(options, scope);
			if (me.isFormUpload(options)) {
				me.upload(options.form, requestOptions.url, requestOptions.data, options);
				return null;
			}
			if (options.autoAbort || me.autoAbort) {
				me.abort();
			}
			async = options.async !== false ? (options.async || me.async) : false;
			xhr = me.openRequest(options, requestOptions, async, username, password);
			headers = me.setupHeaders(xhr, options, requestOptions.data, requestOptions.params);
			request = {
				id: ++Ext.data.Connection.requestId,
				xhr: xhr,
				headers: headers,
				options: options,
				async: async,
				timeout: setTimeout(function() {
					request.timedout = true;
					me.abort(request);
				}, options.timeout || me.timeout)
			};
			me.requests[request.id] = request;
			me.latestId = request.id;
			if (async) {
				xhr.onreadystatechange = Ext.Function.bind(me.onStateChange, me, [request]);
			}
			xhr.send(requestOptions.data);
			if (!async) {
				return me.onComplete(request);
			}
			return request;
		} else {
			Ext.callback(options.callback, options.scope, [options, undefined, undefined]);
			return null;
		}
	}
});

这里判断如果你的ajax请求访问的是login.jsp页面就跳转到csdn页面上。

这里在贴上在所有的ajax请求前,都加上beforerequest事件。

Ext.Ajax.addListener("beforerequest", function(conn, options, eOpts ){
	if(options){
		if(options.url&&options.url.indexOf('UserReport-getDeviceReport')>-1){
			location.href='http://download.csdn.net/detail/xmt1139057136/7112943';
			return;
		}
	}
}, this);

好方法有很多,我这里使用的是requestcomplete事件,后台使用过滤器,如果发现回话为空null,我就修改response的

response.setContentType("text/html;charset=UTF-8;ifLogin=ERROR");

然后在返回的结果里判断,存在content-type存在ifLogin=ERROR,就跳转到后台的登录页面。

Ext.Ajax.addListener("requestcomplete",function(conn, response, options, eOpts){
	var msg = response.getAllResponseHeaders();
	if(msg['content-type'].indexOf('ifLogin=ERROR') != -1){
		window.location.href=serverPath+'admin/login.jsp';
	}
},this);

好了,到这里就结束了。欢迎大家关注我的个人博客。

时间: 2024-08-04 03:33:16

Extjs中对ajax中request方法的重写,对请求的过滤的相关文章

ASP.NET中使用AJAX中的方式

asp.net的控件也封装了html控件,使用js操作不是这么直接. 根据Surance( http://www.fltek.com.cn/)研究发现,在asp.net中,有3种方法使用ajax比较简单.算是ms的一个补偿方案来的. 一个是PageMethod,一个是使用ICallbackEventHandler,还有一个是用ms自带的ajax控件. 分别举例说明,以下例子要实现的功能为: 在页面有一个div,一个按钮.点击按钮要调用后台方法获取一个时间,然后将时间写入div.要求页面不刷新 另

在(ASP/PHP/JSP/html/js)中禁止ajax缓存的方法集锦_AJAX相关

ajax缓存有好处,但也有坏处,缓存有时候会导致误操作,影响用户体验,若你的WEB项目不需要ajax缓存功能,可按下述方法来禁止ajax缓存. 一.在ASP中禁止ajax缓存: '放在ASP网页最开头部分  Response.expires=0 Response.addHeader("pragma","no-cache") Response.addHeader("Cache-Control","no-cache, must-revali

在(ASP/PHP/JSP/html/js)中禁止ajax缓存的方法集锦

ajax缓存有好处,但也有坏处,缓存有时候会导致误操作,影响用户体验,若你的WEB项目不需要ajax缓存功能,可按下述方法来禁止ajax缓存. 一.在ASP中禁止ajax缓存: '放在ASP网页最开头部分 Response.expires=0 Response.addHeader("pragma","no-cache") Response.addHeader("Cache-Control","no-cache, must-revalid

在ASP.NET中使用AJAX的简单方法

介绍 本文介绍了使用AJAX和ASP.NET编写web应用程序的一个简单方法.同时,讨论了使用AJAX的好处和不足.为了举例说明,本文给出了相应的JavaScript代码和用C#.NET编写的ASP.NET代码. 为什么使用AJAX 也许大多数人已经知道AJAX的意思是异步JavaScript和XML(Asynchronous JavaScript and XML).据我所知,这项技术最初是由Microsoft在1999年提出来的,也就是我们所熟知的"使用远程调用(remote calls)的D

JQuery ajax中error返回错误及一直返回error的解答_AJAX相关

进入百度搜索此问题,发现有人这么说了一句 Jquery中的Ajax的async默认是true(异步请求),如果想一个Ajax执行完后再执行另一个Ajax, 需要把async=false就可以了 于时我在ajax中进行了处理 async: false,结果发现提交正常的数据返回是正常的没有错误.  代码如下  $.ajax({ type: "POST", async: false, url:urllink, data:data, dataType:"html", su

jQuery中使用Ajax获取JSON格式数据示例代码_jquery

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.JSONM文件中包含了关于"名称"和"值"的信息.有时候我们需要读取JSON格式的数据文件,在jQuery中可以使用Ajax或者 $.getJSON()方法实现. 下面就使用jQuery读取music.txt文件中的JSON数据格式信息. 首先,music.txt中的内容如下: 复制代码 代码如下: [ {"optionKey":"1"

JQuery ajax中error返回错误及一直返回error的解答

进入百度搜索此问题,发现有人这么说了一句 Jquery中的Ajax的async默认是true(异步请求),如果想一个Ajax执行完后再执行另一个Ajax, 需要把async=false就可以了 于时我在ajax中进行了处理 async: false,结果发现提交正常的数据返回是正常的没有错误. 代码如下 $.ajax({ type: "POST", async: false, url:urllink, data:data, dataType:"html", succ

jquery ajax中error返回错误

  进入百度搜索此问题,发现有人这么说了一句 Jquery中的Ajax的async默认是true(异步请求),如果想一个Ajax执行完后再执行另一个Ajax, 需要把async=false就可以了 于时我在ajax中进行了处理 async: false,结果发现提交正常的数据返回是正常的没有错误.  代码如下   $.ajax({ type: "POST", async: false, url:urllink,  data:data, dataType:"html"

jquery ajax中error返回错误解决办法

进入百度搜索此问题,发现有人这么说了一句 Jquery中的Ajax的async默认是true(异步请求),如果想一个Ajax执行完后再执行另一个Ajax, 需要把async=false就可以了 于时我在ajax中进行了处理 async: false,结果发现提交正常的数据返回是正常的没有错误.  代码如下 复制代码 $.ajax({ type: "POST", async: false, url:urllink,  data:data, dataType:"html"