boolean isAjax = "XMLHttpRequest".equals(req.getHeader("X-Requested-With"));
//如果是ajax请求
if (isAjax) {
String jsonObject = "{\"message\":\"You are not privileged to request this resource.\",\"access-denied\":true,\"cause\":\"AUTHORIZATION_FAILURE\"}";
String contentType = "application/json";
resp.setContentType(contentType);
PrintWriter out = resp.getWriter();
out.print(jsonObject);
out.flush();
out.close();
return;
}
else
{
String path = req.getContextPath();
String basePath = req.getScheme()+"://"+req.getServerName()+":"+req.getServerPort()+path+"/";
resp.sendRedirect(basePath+accessDeniedUrl);
}
//全局设置 jquery_ajax事件
(function($){
// 保存原有的jquery ajax;
var $_ajax = $.ajax;
$.ajax = function(options){
var originalSuccess,
mySuccess,
success_context;
if (options.success) {
// save reference to original success callback
originalSuccess = options.success;
success_context = options.context ? options.context : $;
// 自定义callback
mySuccess = function(data) {
if (data['access-denied']) {
if (data.cause==='AUTHENTICATION_FAILURE') {
alert('登录超时,请重新登录.');
window.location.href = contextPath + '/';
} else if (data.cause==='AUTHORIZATION_FAILURE') {
if (data=="noright")
{
alert('对不起,你没有访问该资源的权限.');
}
}
return;
// call original success callback
originalSuccess.apply(success_context, arguments);
};
// override success callback with custom implementation
options.success = mySuccess;
}
// call original ajax function with modified arguments
$_ajax.apply($, arguments);
};
})(jQuery);
分享到:
相关推荐
- **如何区分Ajax请求**:可以通过检查HTTP请求头部中的`X-Requested-With`字段来判断一个请求是否为Ajax请求。当该字段存在且值为`XMLHttpRequest`时,可以认为这是一个Ajax请求。 - **如何处理Ajax请求**:我们...
此外,开发者也可以在自定义的Ajax请求中设置其他值,或者完全不使用`X-Requested-With`头部信息,因此依赖这个头部属性来判断是否是Ajax请求并不是绝对可靠的。 如果要检查请求头中是否有某个特定属性,我们可以在...
总结一下,PHP中判断Ajax请求的关键在于检查`$_SERVER["HTTP_X_REQUESTED_WITH"]`变量,而这个变量通常是前端通过设置`X-Requested-With`头信息来传递的。通过这种方式,前端和后端可以协同工作,提供流畅的异步体验...
例如,对于AJAX请求,可以返回简化的、仅包含核心数据的响应,而对于普通请求,返回的是包含整个页面结构的完整HTML。 然而,这种方法也有其限制。如果jQuery的AJAX请求是通过`iframe`加载的,`...
为了解决这个问题,我们需要在过滤器或拦截器中区分普通页面请求和AJAX请求,并分别处理。对于AJAX请求,不进行页面重定向,而是通过HTTP响应返回特定的状态或信息,让前端根据这个信息做出相应的处理,如提示用户...
使用AJAX请求可以提高用户体验,因为它允许页面的部分内容异步加载,而无需刷新整个页面。同时,对于搜索引擎来说,提供完整的内容可以保证网页被正确索引和排名。 通过理解这些概念,并在实践中灵活运用,你可以...
本案例详解的核心在于实现一个页面交互功能:当用户点击页面上代表六大洲的元素时,页面将发起一个AJAX请求以获取对应大洲的数据并展示。该功能需要满足两个条件,一是确保相同请求只发起一次,二是第二次点击时不...
但在实际应用中,这个方法足够可靠,因为通常情况下只有AJAX请求会设置这个值。 接下来,我们将探讨一些与PHP和AJAX相关的实践技术: 1. **PHP+AJAX实现无刷新动态加载数据**:这种技术常用于分页或者无限滚动场景...
- **错误处理函数**:为Ajax请求配置错误处理函数,对各种异常情况进行统一处理,如显示错误信息、切换到离线模式或提示用户检查网络连接。 - **超时设置**:根据服务器响应时间设定合理的超时时间,避免因长时间...
服务器比较接收到的验证码与保存在session中的验证码是否一致,以判断验证是否成功。 通过Ajax异步无刷新验证码,不仅可以提升用户体验,减少页面刷新带来的延迟,还可以提高网站的安全性,有效防止自动化攻击。...
以下是一个基本的Ajax请求示例,展示了如何在success回调函数中判断返回的JSON数据是否为null: ```javascript $.ajax({ type: "POST", // 请求类型,这里是POST data: { name: name, // 要传递的参数 code: ...
在拦截器内部,首先获取请求和响应对象,然后通过请求头中的“X-Requested-With”属性判断是否是AJAX请求。如果是AJAX请求,将通过设置响应头来告知客户端Session已失效,并返回null作为结果,这样客户端的Ajax调用...
这样,后端就可以识别出这类特殊的Ajax请求,并返回不包含页面头部和尾部的HTML内容,只返回页面的主体部分。 例如,对于PHP后端,可以这样判断: ```php if (array_key_exists('HTTP_X_PJAX', $_SERVER) && $_...
### 基于J2EE的Ajax宝典 #### 一、引言 《基于J2EE的Ajax宝典》是一本深入介绍Ajax技术在Java 2 Enterprise Edition(J2EE)平台上的应用指南。该书不仅覆盖了Ajax的基础概念和技术细节,还详细介绍了如何在J2EE...
例如,在处理表单提交时,我们可能需要判断请求方式(GET、POST)以及是否是AJAX请求。可以使用以下方法: - 判断GET参数是否存在: ```php if (!empty($_GET)) { // 有GET参数 } else { // 没有GET参数 } ``` - ...
可以通过定时器每隔一定时间(如每秒)向服务器发送Ajax请求,询问任务的最新进度,并根据返回的数据更新进度条的视觉显示。 具体步骤包括: 1. 创建Ajax引擎。这段代码根据浏览器的不同,使用原生JavaScript创建`...
通过AJAX请求,可以在服务器端进行更复杂的判断和处理,然后返回特定的指示。在返回的内容中,可以加上一些加载中的提示,比如“玩命加载中”,以此给用户一个明确的反馈,同时也可以防止因客户端欺骗而带来的一些...
3. readyState和status属性的值可能在不同浏览器中有所不同,这影响了判断AJAX请求是否成功的逻辑。 示例代码展示了一个兼容性处理的AJAX实现。在这段代码中,首先通过判断window对象是否包含XMLHttpRequest属性来...
这个属性是一个布尔值,用于判断当前页面的加载是否由客户端回发事件触发。如果用户没有进行任何交互,而是首次访问页面,Page.IsPostBack将返回false。相反,如果页面是由于用户交互(如按钮点击)导致的重新加载,...
- Ajax请求返回的数据被处理为简化的形式(此处为"1"或"0"),从而便于前端进行判断和响应。 4. jQuery库使用: - jQuery是一个快速、简洁的JavaScript库,它简化了HTML文档遍历和操作、事件处理、动画和Ajax交互...