评论

收藏

[jQuery] JQuery 极致ajax局部和整体刷新

开发技术 开发技术 发布于:2021-07-11 17:19 | 阅读数:395 | 评论:0

  JQuery 极致ajax局部和整体刷新。

首先,先介绍方案
  古人语:“ 授人以鱼不如授人以渔”。那么我先来来说一下方案。
  $p.load(url,data,function(response,status,xhr))
参数描述url规定要将请求发送到哪个 URL。data可选。规定连同请求发送到服务器的数据。function(response,status,xhr)可选。规定当请求完成时运行的函数。额外的参数:response - 包含来自请求的结果数据;status - 包含请求的状态(”success”, “notmodified”, “error”, “timeout” 或 “parsererror”);xhr - 包含 XMLHttpRequest 对象  
那么我们需要提供ajax请求的回调函数至少两个参数url以及jquery对象。
  另外,我们还可能有地址栏重载的可能。
location.href
所以,我们还需要提供一个参数。

于是,我们封装三个属性
// 局部加载
    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

然后,我们来使用
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中给出的方案。

注意点
  要使用jquery的load方法,就必须将对应的页面所有的引用都加上。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="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="text/javascript">
$("a[target=ajaxTodo]").ajaxTodo();
</script>
<div>
  <c:choose>
    <c:when test="${sessionScope.username!=null}">
      <a href="javascript:void(0);" id="mycenter" style="">
        ${sessionScope.username}<s class="icon_arrow icon_arrow_down"></s>
      </a>
      <i class="line"></i>
      <a href="${ctx}/mem/logout?elementId=log_tip&loadPage=header_login_tip" target="ajaxTodo" callback="ajaxDone"
        atitle="你确定要退出吗?" id="user_login_out" style="padding: 0 6px;">退出</a>
  结语:OK,我想你也会得到极致的体验。
  

  
关注下面的标签,发现更多相似文章