关于ajax我相信做B/S开发的程序员都不陌生,在做电子商务网站,还是其他的B/S架构的系统,ajax使用的都特别频繁。那么ajax是什么呢?

  AJAX:”Asynchronous JavaScript and XML”
中文意思:异步JavaScript和XML。指一种创建交互式网页应用的网页开发技术。AJAX并非缩写词,而是由Jesse James Gaiiett创造的名词。
  AJAX不是指一种单一的技术,而是有机地利用了一系列相关的技术:
1、web标准( Standards-Based Presentation )XHTML+CSS的表示;
2、使用 DOM( Document Object Model )进行动态显示及交互;
3、使用 XML 和 XSLT 进行数据交换及相关操作,使用 XMLHttpRequest 进行异步数据查询、检索.
简单理解为:JavaScript + XMLHttpRequest + CSS +服务器端 的集合.废话少说,下面直接上代码(这里我只写以Post方式发送请求的代码,关于JQuery中使用ajax跟以Get方式发送请求,我就不写了),在下面的代码中,我会从建立异步对象,到在WebForm页面中使用异步对象来说说我的体会。
1、用js创建兼容浏览器的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;}

2、页面中ajax的使用
<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>

3、后台页面ResponseEnd.aspx.cs对数据的处理
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);//} #endregiontry{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的话,我觉得这里头的学问很大,哈哈,小弟不才,写了这篇博客,希望各位不要笑话。如果哪位觉得可以看看的话就看看,觉得不堪的话,就一笑置之吧,呵呵。

转载于:https://www.cnblogs.com/happylinjie/archive/2012/01/25/2329406.html

关于在WebForm页面使用Ajax相关推荐

  1. WebForm页面使用Ajax

    AJAX:"Asynchronous JavaScript and XML" 中文意思:异步JavaScript和XML.指一种创建交互式网页应用的网页开发技术.AJAX并非缩写词 ...

  2. jQuery监控页面所有ajax请求的方法

    jQuery实现监控页面所有ajax请求的方法 本文实例讲述了jQuery实现监控页面所有ajax请求的方法.分享给大家供大家参考,具体如下: 你是不是有遇到这样的问题:页面发起两个ajax请求,希望 ...

  3. jq中法可以发起ajax请求的方法有,jQuery实现监控页面所有ajax请求的方法

    本文实例讲述了jQuery实现监控页面所有ajax请求的方法.分享给大家供大家参考,具体如下: 你是不是有遇到这样的问题:页面发起两个ajax请求,希望它们都成功以后,再做一个动作? 很容易想到的解决 ...

  4. ASP.Net请求处理机制初步探索之旅 - Part 4 WebForm页面生命周期

    开篇:上一篇我们了解了所谓的请求处理管道,在众多的事件中微软开放了19个重要的事件给我们,我们可以注入一些自定义的业务逻辑实现应用的个性化设计.本篇,我们来看看WebForm模式下的页面生命周期. ( ...

  5. UnityWebform(2):自定义LifetimeManager和TypeConverter使Unity从HttpContext中取值注入WebForm页面...

    上一篇Unity&WebForm(1): 自定义IHttpHandlerFactory使用Unity对ASP.NET Webform页面进行依赖注入中让Unity和WebForm结合在一起,通 ...

  6. jQuery实现监控页面所有ajax请求的方法

    本文实例讲述了jQuery实现监控页面所有ajax请求的方法.分享给大家供大家参考,具体如下: 你是不是有遇到这样的问题:页面发起两个ajax请求,希望它们都成功以后,再做一个动作? 很容易想到的解决 ...

  7. webform ajax 表格,在webform中使用ajax

    如果你用过Asp.net webform, 说明你也算是.NET 开发的老兵了.WEBform应该是2011-2013左右,当时还用visual studio 2005. visual studio ...

  8. aspx页面使用ajax遇到try catch中使用Response.End()报错

    1.使用Ajax接收数据,在返回Response.Write()后应该调用Response.End()才能将数据写入到调用的页面,才能被jQuery的回调函数获取到返回的JSON数据 2.在try-- ...

  9. python爬虫动态加载页面_如何爬动态加载的页面?ajax爬虫你有必要掌握

    通过前面几期Python爬虫的文章,不少童鞋已经可以随心所欲的爬取自己想要的数据,就算是一些页面很难分析,也可以用之前介绍的终极技能之「Selenium」+「Webdriver」解决相关问题,但无奈这 ...

最新文章

  1. 自动驾驶有量子飞跃式改进,马斯克称年内实现L5级别自动驾驶?
  2. nginx rewrite中last和break的区别
  3. python序列数据类型_Python 数据类型 之 序列类型
  4. ref 和out 关键字
  5. 数据算法之二叉树平衡(BinTreeNode Rotate)的Java实现
  6. 爬虫养成记 - urllib2的调试和错误处理
  7. 《Word排版艺术》读后感,兼谈LaTeX
  8. activex 控件 过期,解决“无法注册Flash Player 的ActiveX控件”的问题
  9. 共享计算机无法打开文件,Windows7局域网无法打开共享文件分析
  10. thinkpad T500开机大于10分钟,黑屏
  11. pandas:sample函数解释
  12. 红尘梦落,卧醉千年,当所有的繁华散尽
  13. Tensorflow的基本概念与常用函数
  14. 在浏览器输入url回车后发生了什么
  15. 拼多多是PHP还是java,应届程序员收到拼多多offer 表情瞬间爆发
  16. Tor配置:514 Authentication required
  17. 测试iphone硬件好坏的软件,如何检测Apple手机硬件是否损坏
  18. 什么是哲学?《哲学家们都干了些什么?》读后感
  19. uniapp 自定义相机人脸和人脸识别
  20. EIM是什么?与QQ有什么区别?

热门文章

  1. SpringMVC之Controller查找(Spring4.0.3/Spring5.0.4源码进化对比)
  2. virtualbox 启动时Kernel driver not installed (rc=-1908) 错误的解决方法
  3. 使用扩展的 CodeIgniter 框架实现 RESTful 框架
  4. Android 多线程下载 显示进度 速度
  5. centos下nginx+postgresql+php+memcached+apc安装与配置
  6. Java 用正则表达式 提取目录
  7. Linux系统管理学习路线图
  8. 分享一个WM上绘制饼图、柱形图、折线图的控件类
  9. HAL Flat Display Driver Demystified
  10. 企业短信平台会被其他的营销工具代替吗?企业短信平台有什么过人之处