WebForm页面使用Ajax
关于ajax我相信做B/S开发的程序员都不陌生,在做电子商务网站,还是其他的B/S架构的系统,ajax使用的都特别频繁。那么ajax是什么呢?
function createAjax() {
var ajaxObject = false;
try {
ajaxObject = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
ajaxObject = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
ajaxObject = false;
}
}
if (!ajaxObject && typeof (XMLHttpRequest) != 'undefinded') {
ajaxObject = new XMLHttpRequest();
}
return ajaxObject;
}
<script type="text/javascript">
var ajaxObject;
window.onload = function () {
ajaxObject = createAjax();
getControl("btnOK").onclick = submitData1;
}
function submitData1() {
var txtName = getControl("txtName").value;
//以Post方式请求发送请求
ajaxObject.open("POST", "ResponseEnd.aspx", true);
//以Post方式发送异步请求需要设置请求头
ajaxObject.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajaxObject.onreadystatechange = function () {
if (ajaxObject.readyState == 4) {
//状态200表示异步对象已经完全接收完服务器响应的数据
if (ajaxObject.status == 200) {
var res = ajaxObject.responseText;
alert(res);
}
}
}
//发送异步请求(Post方式发送请求在send里面书写自己要发送给服务器的参数)
ajaxObject.send("flag=1&name=" + txtName);
}
</script>
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace Web { public partial class ResponseEnd : System.Web.UI.Page { protected void Page_Load( object sender, EventArgs e) { if (! string .IsNullOrEmpty(Request[ "flag" ])) { ShuChu(); } } private void ShuChu() { #region 方法一 //try //{ // string name = Request["name"]; // Response.Write(name); //} //catch (Exception ex) //{ // throw new Exception(ex.Message); //} //finally //{ // Response.End(); //} #endregion #region 方法二 //try //{ // string name = Request["name"]; // Response.Write(name); // this.Page.Visible = false; // Context.ApplicationInstance.CompleteRequest(); //} //catch (Exception ex) //{ // throw new Exception(ex.Message); //} #endregion try { string name = Request[ "name" ]; Response.Write(name); Response.End(); } catch (System.Threading.ThreadAbortException ex) { } catch (Exception ex) { throw new Exception(ex.Message); } } } } |
关于Ajax,我相信做B/S开发的大虾大牛们都特别的熟练,我写这篇博客主要是针对在WebForm中使用ajax的时候,我们后台输出我们想要的数据的时候要注意的地方,那就是:我们在Response.Write("data")输出我们想要的数据,但是我们不想同时把页面的html代码也输出那怎么办?(如果异步对象把请求发送到一个ashx页面中,或者发送到一个把前台页面中的html代码给删除掉的aspx页面中,我们也不用操心如何过滤掉html代码,但开发中有的需求就是不能这样处理),很多人用Response.End()来终止当前页面的执行。这样没错,但是要注意一点,如果你是try...catch里面使用了Response.End()的话,会被捕捉到一个异常:线程被中止"。这是因为:
Response.End 方法终止页的执行,并将此执行切换到应用程序的事件管线中的Application_EndRequest 事件,同时抛出ThreadAbortException 异常,异常信息为“正在中止线程”。
那如果我在WebForm中使用ajax,并且是把请求发送给本页面,同时我在后台页面中只输出我想要的数据,但不想输出页面的html代码那怎么办呢?这个我在上面的代码中写的很清楚了,我提供了三种解决方案,有碰到这个问题的各位朋友,可以参考我在ResponseEnd.aspx.cs里面写的代码,三种方式都能达到我们预期的效果。
深入去学习ajax的话,我觉得这里头的学问很大,哈哈,小弟不才,写了这篇博客,希望各位不要笑话。如果哪位觉得可以看看的话就看看,觉得不堪的话,就一笑置之吧,呵呵。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· PPT革命!DeepSeek+Kimi=N小时工作5分钟完成?
· What?废柴, 还在本地部署DeepSeek吗?Are you kidding?
· DeepSeek企业级部署实战指南:从服务器选型到Dify私有化落地
· 程序员转型AI:行业分析
· 重磅发布!DeepSeek 微调秘籍揭秘,一键解锁升级版全家桶,AI 玩家必备神器!