ASP.NET中一种超简单的Ajax解决方案
为什么是Ajax2?
因为之前有一个blqw.Ajax,并且已经在项目中投入使用了,但是没有这个方便,这个是后来才弄的,为了纪念第一版的blqw.Ajax,所以这个就2了...
话说看了评论才发现,原来之前有组件已经实现类似的功能了
不过我不是很理解的是AjaxPro为什么一定要配置Handler,直接在后端文件中完成不好吗?这样看,似乎我这个也还是有点自己的特色的...
调用方式
blqw.Ajax2调用方式
都说了是超简单的,所以调用起来就一定是超简单的了.....
建立一个web项目
引用blqw.Ajax2
对了,聪明你的一定已经知道了,我只是向页面中注入了一段js,利用了一个同步ajax请求模拟出的这样一个效果而已
技术上实现并不难
window.blqw = window.blqw || {}; blqw.Ajax = blqw.Ajax || {}; blqw.Ajax.GetRequest = function () { if (window.ActiveXObject) { try { return new ActiveXObject('Msxml2.XMLHTTP'); } catch (e) { return new ActiveXObject('Microsoft.XMLHTTP'); } } else if (window.XMLHttpRequest) { return new XMLHttpRequest(); } } blqw.Ajax.Throw = function(e){{ function AjaxError(message,stack,type){{ this.name = 'AjaxError'; this.type = type; this.message = message; this.stack = stack; this.innerError = null; this.toString = function () {{ return 'ajaxerr:' + this.message; }}; }}; var err = new AjaxError(e.message,e.stack,e.type); var e1 = err; while(e.innerError){{ e = e.innerError; e1.innerError = new AjaxError(e.message,e.stack,e.type); e1 = e1.innerError; }} return err; }} blqw.Ajax.Exec = function (method, args) { var getStr = function (obj) { if (obj == null) return ''; var type = typeof (obj); switch (type) { case 'number': case 'boolean': return obj.toString(); case 'string': return encodeURIComponent(obj.replace('\0', '\0\0')); case 'undefined': return 'undefined'; case 'function': try { return arguments.callee(obj()); } catch (e) { return 'null'; } case 'object': type = Object.prototype.toString.apply(obj); switch (type) { case '[object Date]': return encodeURIComponent(obj.getFullYear() + '-' + (obj.getMonth() + 1) + '-' + obj.getDate() + ' ' + obj.getHours() + ':' + obj.getMinutes() + ':' + obj.getSeconds() + '.' + obj.getMilliseconds()); case '[object RegExp]': return encodeURIComponent(obj.toString().replace('\0', '\0\0')); case '[object Array]': var arr = []; for (var i in obj) arr.push(arguments.callee(obj[i])); return arr.join(','); case '[object Object]': return '[object Object]'; } break; } } var arr = []; for (var i = 0; i < args.length; i++) { arr.push(getStr(args[i])); } url = window.location.href; var req = blqw.Ajax.GetRequest(); req.open('POST', url, false); req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8'); var ret = req.send('blqw.ajaxdata=' + arr.join('\0') + '&blqw.ajaxmethod=' + method); if (req.status == 200) { var html = req.responseText; var data = eval('(' + html+ ')'); if ('v' in data) { eval(data.v); } if ('e' in data) { throw blqw.Ajax.Throw(data.e); } else { return data.d; } } else { alert('出现错误'); } } window.GetString=function(){return blqw.Ajax.Exec('GetString',arguments);}
向页面中添加的js
事实上正式使用的js是压缩了的
特点
当然,如果只有这样,你们一定就骂我的......
我为他增加了一些实用的方法
1.没有form也可以
如果页面中没有form,只要把<% blqw.Ajax2.Register(this); %>写在aspx页面中就可以了
2.返回类型object
3.异常处理
4.方便的js写入
写入alert
写入变量 或 修改变量
写入js
缺陷
- 参数仅支持System下的基础类型
- Ajax请求中无法取消
- 不支持ref out params 这些东西....
- 安全性不够,需要自己在代码中实现(关于这点我自己也一直在纠结,如果园友们有好的方案可以提点一下我啊)
Demo下载
源码下载
https://code.csdn.net/jy02305022/blqw-ajax2
事实上他只有2个文件
ASP.NET中一种超简单的Ajax解决方案的更多相关文章
- ASP.net中导出Excel的简单方法介绍
下面介绍一种ASP.net中导出Excel的简单方法 先上代码:前台代码如下(这是自己项目里面写的一点代码先贴出来吧) <div id="export" runat=&quo ...
- ASP.NET中登录功能的简单逻辑设计
ASP.NET中登录功能的简单逻辑设计 概述 逻辑设计 ...
- ASP.NET中几种加密方法
下面就是ASP.NET中几种加密方法.加密算法有两种,也就是上面提到的MD5和SHA1,这里我举的例子是以MD5为例,SHA1大致相同,只是使用的类不一样. MD5的全称是Message-Digest ...
- HTML页面中5种超酷的伪类选择器:hover效果
想在自己的网站中应用超酷的hover效果吗?也许你可以从如下的这些实例中获得一些灵感,如果你喜欢这些效果,也可以直接拷贝代码并应用到你的站点. 给平淡的站点带来活力 hover效果能给网页增加一些动态 ...
- <经验杂谈>C#中一种最简单、最基本的反射(Reflection):通过反射获取方法函数
说起反射之前和很多用C#/.net的同仁们一样,相比于一般应用层对数据的增删改查总有点觉得深奥到难以理解.其实程序这东西,用过.实践过就很简单,我一直这么认为. 先说下概念:反射 Reflection ...
- 在ASP.Net中两种利用CSS实现多界面的方法
通过使页面动态加载不同CSS实现多界面(类型于csdn的blog): 方法一: <%@page language="C#"%><%@import namespac ...
- ASP.NET中26种性能优化方法
系统类 Type类,Object类,String类, Arrary类,Console类, Exception类,GC类, MarshalByRefObject类, Math类. DateTime结构 ...
- Web页面中5种超酷的Hover效果
hover 效果能给网页增加一些动态效果,并且使得站点更具有活力.原来的做法是使用javascript来实现这些动态效果,但是随着CSS3的引入和现代浏览器 的支持,我们可以用纯粹的CSS代码来实现这 ...
- JQuery在asp.net中三种ajax传值
1)通过webservice,注意去掉注释[System.Web.Script.Services.ScriptService]这行前的注释 2)通过aspx.cs文件中的静态方法 3)通过aspx文件 ...
随机推荐
- 开发前准备 va2015安装
1.下载vs2015 2.进行安装(同时安装node.js.npm与Android SDK,会省很多时间) 安装的时候要选择自定义安装 如果先安装了Android SDK的话就不要勾选了,我就是勾选了 ...
- Android照片墙加强版,使用ViewPager实现画廊效果
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/12646775 记得关于照片墙的文章我已经写过好几篇了,有最基本的照片墙,有瀑布流模 ...
- C语言小练习三
题目要求: 定义一个二维数组保存 10个学生的5门课成绩,分别用函数实现:(1)input():输入每个学生的成绩:(2)output():输出每个学生的成绩:(3)aver_stu():计算并输出每 ...
- java中double变量保留小数问题
(转载自玄影池扁舟) 做java项目的时候可能经常会遇到double类型变量保留小数的问题,下面便把我的经验做个简短的总结: java中double类型变量保留小数问题大体分两种情况: (一):小数点 ...
- 《photon中配置lite的相关问题》
前几天在学习photon的时候发现了一个问题: 无论如何都找不到Lite文件夹,我是一个新手这也是写给那些新上手的朋友: 首先下载SDK以后配置完成后无论如何都找不到Lite文件夹和相关的Lite.d ...
- SVN修改用户名与密码
由于在svn的界面中并没有为我们提供直接更换用户名密码的地方,所以一旦我们需要更换用户名的就需要自己想一些办法. 解决方案如下: 在Eclipse使用SVN的过程中大多数人往往习惯把访问SVN的用户名 ...
- iOS-详细解读Const
在过去开发中,几乎每一个人都会定义宏,因为这东西实在是好用,省去了代码量而且还不容易错,而我这篇文中所介绍的const可以完美替带宏定义. 并且苹果也建议大家抛弃宏定义而转投const ,并且swif ...
- linux 第一题 计算题
#!/bin/bash echo "输入第一个数字" read A b= ]] do && [[ ${A} != *[!]* ]] then echo " ...
- BZOJ3218 UOJ#77 A+B Problem(最小割+主席树)
竟然在BZOJ上拿了Rank1太给力啦. p.s.:汗,一发这个就被一堆人在2月27号强势打脸-- 传送门(BZOJ) 传送门(UOJ) 说说这道题目吧: 首先是说说这个构图吧.因为有选择关系,我们很 ...
- python 装饰器学习(decorator)
最近看到有个装饰器的例子,没看懂, #!/usr/bin/python class decorator(object): def __init__(self,f): print "initi ...