jquery.unobtrusive-ajax.js单独的用法

(插件本身已经减少了人力,如果开始无脑开发,简直就是无能,@Ajax里面哪里帮助类生成的其实就是jquery.unobtrusive的一些特性)

jquery.unobtrusive是MVC中出现的jquery插件,用与和MVC中Ajax交互,但是我不怎么喜欢在构建页面的时候用@Ajax.XXX去构建,感觉太依赖了,jquery.unobtrusive应该是所有web后端语言都能用的东西。所以就有了自己的单独使用jquery.unobtrusive的旅程,研究jquery.unobtrusive的用法和源码(之前已经有过阅读源码的文章和一定的注释,地址:http://www.cnblogs.com/RainbowInTheSky/p/4466993.html)。

用法data-ajax="true"是开启jquery.unobtrusive。

$(element.getAttribute("data-ajax-update"))

  源码中有这样一段,说明data-ajax-update的值就是选择器得到的,可以直接#id,.class。(data-ajax-update//更新的对象)

经常与data-ajax-mode配合使用

data-ajax-mode//更新的形式 BEFORE插入到对象之前 AFTER插入到对象之后 为空就是覆盖

  函数调用

data-ajax-begin
data-ajax-complete
data-ajax-success
data-ajax-failure

上面的四个属性对应$.ajax中的beforeSend,complete,success,error,他们的参数可以是程序片段,也可以是一个function,但是在写参数的时候不能是functiong(){}这样的匿名函数。基本涵盖了ajax,满足了需求。

不过在使用

data-ajax-loading//显示loading的对象

data-ajax-loading-duration//持续时间 默认是0

这两个属性的时候需要扩展一下,因为jquery.unobtrusive没有对齐做UI的实现,需要自己扩展。data-ajax-loading就是需要显示的对象,data-ajax-loading-duration是持续时间,他们使用的是jquery.show(),和jquery.hide()这两个函数。为此我写了一个遮罩的扩展

 1 //创建简单遮罩层,显示load时的信息,配合Unobtrusive
 2 ; (function ($) {
 3         //设置背景层高
 4         function height() {
 5             var scrollHeight, offsetHeight;
 6             // handle IE 6
 7             if ($.browser.msie && $.browser.version < 7) {
 8                 scrollHeight = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);
 9                 offsetHeight = Math.max(document.documentElement.offsetHeight, document.body.offsetHeight);
10                 if (scrollHeight < offsetHeight) {
11                     return $(window).height();
12                 } else {
13                     return scrollHeight;
14                 }
15                 // handle "good" browsers
16             }
17             else if ($.browser.msie && $.browser.version == 8) {
18                 return $(document).height() - 4;
19             }
20             else {
21                 return $(document).height();
22             }
23         };
24         //设置背景层宽
25         function width() {
26             var scrollWidth, offsetWidth;
27             // handle IE
28             if ($.browser.msie) {
29                 scrollWidth = Math.max(document.documentElement.scrollWidth, document.body.scrollWidth);
30                 offsetWidth = Math.max(document.documentElement.offsetWidth, document.body.offsetWidth);
31                 if (scrollWidth < offsetWidth) {
32                     return $(window).width();
33                 } else {
34                     return scrollWidth;
35                 }
36                 // handle "good" browsers
37             }
38             else {
39                 return $(document).width();
40             }
41         };
42         /*==========全部遮罩=========*/
43         function createLayer(load) {
44             //背景遮罩层
45             var layer = $("<div id=" + load.attr("data-loadlayer-id") + "></div>");
46             layer.css({
47                 zIndex: 9998,
48                 position: "absolute",
49                 height: height() + "px",
50                 width: width() + "px",
51                 background: "black",
52                 top: 0,
53                 left: 0,
54                 filter: "alpha(opacity=30)",
55                 opacity: 0.3
56             });
57
58             //图片及文字层
59             var content = $("<div id=" + load.attr("data-loadlayer-id") + "-content" + "></div>");
60             content.css({
61                 textAlign: "left",
62                 position: "absolute",
63                 zIndex: 9999,
64                 //height: opt.height + "px",
65                 //width: opt.width + "px",
66                 top: "50%",
67                 left: "50%",
68                 verticalAlign: "middle",
69                 //background: opt.backgroudColor,"#ECECEC"
70                 background: "#ECECEC",
71                 borderRadius: "3px",
72                 padding:"2px 5px 2px 5px",
73                 fontSize: "13px"
74             });
75
76             //content.append("<img style=‘vertical-align:middle;margin:" + (opt.height / 4) + "px; 0 0 5px;margin-right:5px;‘ src=‘" + opt.backgroundImage + "‘ /><span style=‘text-align:center; vertical-align:middle;‘>" + opt.text + "</span>");
77             content.append("<span style=‘text-align:center; vertical-align:middle;color:#000000‘>" + load.attr("data-loadlayer-msg") + "</span>");
78             load.append(layer.append(content));
79             var top = content.css("top").replace(‘px‘, ‘‘);
80             var left = content.css("left").replace(‘px‘, ‘‘);
81             content.css("top", (parseFloat(top) - parseFloat(content.css("height")) / 2)).css("left", (parseFloat(left) - parseFloat(content.css("width")) / 2));
82
83             layer.hide();
84             return this;
85         }
86
87         $(document).ready(function () {
88             createLayer($("div[data-loadlayer=true]"))
89         });
90 })(jQuery)

使用方法

 <div data-loadlayer="true" data-loadlayer-id="load" data-loadlayer-msg="loading..."></div>

然后需要在调用的地方data-ajax-loading="#load"即可

时间: 2024-10-06 03:16:13

jquery.unobtrusive-ajax.js单独的用法的相关文章

关于Jquery中ajax方法data参数用法的总结

jquery手册描述: data 发送到服务器的数据.将自动转换为请求字符串格式.GET 请求中将附加在 URL 后.查看 processData 选项说明以禁止此自动转换.必须为 Key/Value 格式.如果为数组,jQuery 将自动为不同值对应同一个名称.如 {foo:["bar1", "bar2"]} 转换为 '&foo=bar1&foo=bar2'. 示例: $.ajax({    type: "POST",    u

jQuery(二) jQuery对Ajax的使用

学习使我快乐!嘿 --WH 一.jQuery使用Ajax 想要了解jQuery如何使用Ajax,并且体会到它所带来的方便性,那么就得了解原始的Ajax是如何编写的,是怎样的繁琐,然后和Jquery的代码进行对比,才会有所悟. 1.1.什么是Ajax?(顺带提一下) 全名:Asynchronous Javascript And Xml[异步javascript和xml], 同步和异步原理图 同步就是浏览器发送一个请求到服务器端,网址会改变,页面会被重新加载到新的页面.如图 异步就是浏览器发送一个请

js原生ajax与jquery的ajax的用法区别

什么是ajax和原理? AJAX 是一种用于创建快速动态网页的技术. 通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据 XMLHttpRequest对象的基本属性: onreadtstatechange 每次状态改变所触发事件的时间处理程序. responseText 从服务器响应返回以字符串为形式的数据 responseXML 从服务器响应返回以XML(DOM兼容文档)数据对象 status 从服务器返回的数字代码 100-199 用于指定客户端应相应的某些动作. 2

jquery.validate.js插件的用法

最近做项目,需要用到 jQuery.validate.js插件,于是记录一下工作中的一些经验,以便日后学习. [例子如下] 1.前台页面 <form id="form1" method="post"> 用户名:<input type="text" id="UserName" name="UserName" /><!--<span id="name_error&q

Js原生Ajax和Jquery的Ajax

一.Ajax概述 1.什么是同步,什么是异步 同步现象:客户端发送请求到服务器端,当服务器返回响应之前,客户端都处于等待卡死状态 异步现象:客户端发送请求到服务器端,无论服务器是否返回响应,客户端都可以随意做其他事情,不会被卡死 2.Ajax的运行原理 页面发起请求,会将请求发送给浏览器内核中的Ajax引擎,Ajax引擎会提交请求到服务器端,在这段时间里,客户端可以任意进行任意操作,直到服务器端将数据返回给Ajax引擎后,会触发你设置的事件,从而执行自定义的js逻辑代码完成某种页面1 功能. 二

原生js和jquery发送ajax请求及封装

原生js                                   // ajax get 五部曲function ajax_get(url,data){ // 异步对象 var ajax=new XMLHttpRequest(); // 设置url和请求方式 // url方法 如果有数据要把数据拼接到url中?name=jack&age=20 if(data){ url+=?; url+=data; }else{}; ajax.open('get',url); // 发送请求 aja

通过原生js的ajax或jquery的ajax获取服务器的时间

在实际的业务逻辑中,经常是与时间相关的,而前端能获得的时间有两个:客户端的时间,服务器的时间.客户端时间通过 javascript中的Date对象可以获取,如 Java代码   var dt = new Date(); var tm = dt.getTime(); 那么tm就是客户端的时间,另外也可以通过对应的getFullYear(),getMonth(),getDate()取到对应的年月日等...但这个时间可靠吗?好吧,那取服务器时间吧经常用到的是后台写一个php,jsp,cgi,asp..

jquery.tmpl.js 模板引擎用法

1.0 引入: <script src="/js/jquery.tmpl.min.js"></script> 2.0 模板: <script type="text/x-jquery-tmpl" id="tmpl"> <li> <h5><a href="/news/Detail/${NewsId}">${Title}</a></h5>

jQuery $.post $.ajax用法

jQuery $.post $.ajax用法 jQuery.post( url, [data], [callback], [type] ) :使用POST方式来进行异步请求 参数: url (String) : 发送请求的URL地址. data (Map) : (可选) 要发送给服务器的数据,以 Key/value 的键值对形式表示. callback (Function) : (可选) 载入成功时回调函数(只有当Response的返回状态是success才是调用该方法). type (Stri