前言:本篇《极致ajax局部刷新》将介绍如何通过jquery的load方法进行局部刷新,load方法本身很简单,但是想要结合到jfinal和bootstrap的公共项目中,就需要下点功夫了。@H_502_4@
首先,先介绍方案@H_301_6@
古人语:“ 授人以鱼不如授人以渔”。那么我先来来说一下方案。@H_502_4@
$p.load(url,data,function(response,status,xhr))@H_502_4@
参数 | 描述 |
---|---|
url | 规定要将请求发送到哪个 URL。 |
data | 可选。规定连同请求发送到服务器的数据。 |
function(response,xhr) | 可选。规定当请求完成时运行的函数。额外的参数:response - 包含来自请求的结果数据;status - 包含请求的状态(”success”,“notmodified”,“error”,“timeout” 或 “parsererror”);xhr - 包含 XMLHttpRequest 对象 |
那么我们需要提供ajax请求的回调函数至少两个参数url以及jquery对象。@H_502_4@
另外,我们还可能有地址栏重载的可能。
location.href
所以,我们还需要提供一个参数。@H_502_4@
于是,我们封装三个属性@H_301_6@
// 局部加载
String elementId = getPara("elementId");
String loadPage = getPara("loadPage");
// 地址栏跳转路径
String locationUrl = getPara("locationUrl");
setAttr("elementId",elementId);
setAttr("loadPage",loadPage);
setAttr("locationUrl",locationUrl);
<a href="${ctx}/mem/logout?elementId=log_tip&loadPage=header_login_tip"
<form class="pop_login_form"
action="${ctx}/mem/login?callbackType=closeCurrent&elementId=log_tip&loadPage=header_login_tip"
注意:
1. jfinal端封装三个属性提供给前端的回调函数。
2. jsp中将对应的参数传递给jfinal@H_502_4@
然后,我们来使用@H_301_6@
function dialogAjaxDone(json) {
YUNM.ajaxDone(json);
if (json[YUNM.keys.statusCode] == YUNM.statusCode.ok || json[YUNM.keys.statusCode] == YUNM.statusCode.info) {
if ("closeCurrent" == json.callbackType) {
close_pop();
}
if (json.locationUrl) {
location.href = json.locationUrl;
} else {
// 如果指定了后调转页面,进行调转
$("#" + json.elementId).load(common.loadPath + json.loadPage + common.viewType);
}
}
}
我提供类似的方法,主要是按照标题1中给出的方案。@H_502_4@
注意点@H_301_6@
要使用jquery的load方法,就必须将对应的页面所有的引用都加上。@H_502_4@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns=@H_301_130@"http://www.w3.org/1999/xhtml">
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ include file="/components/common/taglib.jsp"%>
<script type=@H_301_130@"text/javascript"> $("a[target=ajaxTodo]").ajaxTodo(); </script>
<div>
<c:choose>
<c:when test=@H_301_130@"${sessionScope.username!=null}">
<a href=@H_301_130@"javascript:void(0);" id=@H_301_130@"mycenter" style=@H_301_130@"">
${sessionScope.username}<s class=@H_301_130@"icon_arrow icon_arrow_down"></s>
</a>
<i class=@H_301_130@"line"></i>
<a href=@H_301_130@"${ctx}/mem/logout?elementId=log_tip&loadPage=header_login_tip" target=@H_301_130@"ajaxTodo" callback=@H_301_130@"ajaxDone" atitle=@H_301_130@"你确定要退出吗?" id=@H_301_130@"user_login_out" style=@H_301_130@"padding: 0 6px;">退出</a>
结语:OK,我想你也会得到极致的体验。@H_502_4@