这几天把项目中用到的ajaxpro方法学习总结了一下,也参考了网上的一些资料

一、简介

  ajax(asynchronose javascript+xml)应用可以仅向服务器发送并取回必需的数据,它使的

SOAP或其他基于XML的web service接口,并在客户端采用javascript处理来自服务器的响应。

因为在服务器和浏览器之间交找的数据大量减少,结果我们就能看到响应更快的应用。同时处理工作可以发出请求的客户端机器上完成,所以web服务器的处理时间也减少了。

  Ajax应用程序的优势在于:

1通过异步模式,提升了用户体验

2优化了浏览器和服务器之间的传输,减少了不必要的数据往返,减少了带宽的占用

3Ajax引擎在客户端运行,承担了一部分本来由服务器承担的工作,从而减少了大用户量下的服务器负载

二、配置

Ajax.net有AjaxPro.dll和Ajax.dll两个版本,这两个版本在使用上虽然差不多,但还是有区别的,主要的区别如下:

web.config配置文件不一样

(1)web.config配置文件不一样

ajax.dll的配置文件的写法为

<add verb="post,get" path="ajax/*.ashx" type="ajax.pagehanderfactory,ajax"/>

ajaxpro.dll的醋置文件写法为

<add verb="*" path='ajaxpro/*.ashx" type="ajaxpro.ajaxhanderfactory,ajaxpro"/>

(2)调用服务器方法的时候方式 不一样,很多朋友就是因为这个原因,发现命名空间找不到或者对象未定义

调用ajax.dll的时候调用服务器方法不要加命名空间

应用ajaxpro.dll的时候,调用服务器方法需要加命名空间

ajax.dll为

var response=Web.GetServermethod();

alert(response.value);

ajaxpro.dll为

var response=web.test.getserverMethod();

alert(response.value);

三、使用步骤

1,首先下载ajaxpro组件。并将ajaxpro.dll引用到网站

修改webconfig。在<system.web>元素中添加以下代码

 <httpHandlers><add path="ajaxpro/*.ashx" verb="POST,GET" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>/*这里就是注册的代码*/<remove verb="*" path="*.asmx"/><add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/><add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/><add verb="GET,HEAD" path="ScriptResource.axd" validate="false" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></httpHandlers>

3对ajaxpro在页page_load事件中进行运行注册。如

protected void Page_Load(object sender, EventArgs e)        {            Response.Expires = -1;//清除页面缓存            AjaxPro.Utility.RegisterTypeForAjax(typeof(ZHGL_KHListAddandEdit));//将此后台页面类,注册到前台if (!this.IsPostBack)            {

            }        }

4服务器方法的注册

[AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequirement.ReadWrite)]//或者[AjaxPro.AjaxMethod()]        public DataTable DataBingCity(string prcID)        {return DBUtility.DbHelperSQL.Query("select * from GG_City where  ProvinceID=" + prcID + "").Tables[0];        }

用户页面js调用

//省市二级联动        function GetCity(prcID) {            form1.ddlCity.length = 1;var rsl = InvestCallSys.SeatMange.ZHGL_KHListAddandEdit.DataBingCity(prcID).value;//写上完整的引用空间+类名+服务器端注册函数if (rsl != null && typeof (rsl) == "object") {for (var i = 0; i < rsl.Rows.length; i++) {                    op = new Option(rsl.Rows[i]["Name"], rsl.Rows[i]["Name"]);                    form1.ddlCity.options.add(op);                }            }        }

目前项目中用到最多的就是这种形式,之前还有一种是ExtJs方法,这是他们的官方网站http://extjs.org.cn/

写到这里我们再来看一下silverlight中,后台程序是如何和前台js互相操作的

public Container()        {            InitializeComponent();            VarList.Container = this;            txtWidth.Text = this.container.Width.ToString();            txtHeight.Text = this.container.Height.ToString();            HtmlPage.RegisterScriptableObject("xml", this);//注册一个可以被脚本调用的当前页面的对象实例            if (HtmlPage.Window.GetProperty("GetValue") != null)//检验页面脚本是否存在该scripobject对象                HtmlPage.Window.Invoke("GetValue");            Application.Current.Host.Content.FullScreenChanged += new EventHandler(Content_FullScreenChanged);        }

这是一个xaml页面加载时候实例化事件

这里的htmlpage是一个静态类(允许访问和操作浏览器的文档对象模型(DOM)不同与(BOM浏览器对象模型)嘿嘿

这个类中可以将当前类注册到前台,取名为xml

这里跟ajaxpro类似,还需要将你要调用的后台方法前加属性

[ScriptableMember]public void SetNameAndXml(string xml)        {if (!string.IsNullOrEmpty(HtmlPage.Document.QueryString["wfName"]))                wfname = HttpUtility.UrlDecode(HtmlPage.Document.QueryString["wfName"]);if (!string.IsNullOrEmpty(HtmlPage.Document.QueryString["wfEntity"]))                _entitycode = HtmlPage.Document.QueryString["wfEntity"];            inputxml(xml);        }

然后前台页面调用

function GetValue() {var xaml = $get('Xaml1'); //window.dialogArguments.getxml()            xaml.content.xml.SetNameAndXml(window.dialogArguments.getxml());        }

转载于:https://www.cnblogs.com/tnspop/archive/2012/03/14/2395362.html

ajaxpro用法小结相关推荐

  1. oracle @spool,Oracle spool 用法小结

    Oracle spool 用法小结 转自:http://wallimn.javaeye.com/blog/472182 对于SPOOL 数据的SQL,最好要自己定义格式,以方便程序直接导入,SQL语句 ...

  2. js push(),pop(),unshift(),shift()的用法小结

    js中push(),pop(),unshift(),shift()的用法小结 1.push().pop()和unshift().shift() 这两组同为对数组的操作,并且会改变数组的本身的长度及内容 ...

  3. C++ :: 的用法小结

    原文:http://blog.csdn.net/whz_zb/article/details/6843369 :: 的用法小结: 用于将类内声明的静态数据成员在类外初始化: 用于将类内声明的函数成员在 ...

  4. Java中getResourceAsStream的用法小结

    2019独角兽企业重金招聘Python工程师标准>>> Java中getResourceAsStream的用法小结 一.Java中的getResourceAsStream主要有以下三 ...

  5. setscale方法的用法_基于BigDecimal.setScale的用法小结

    1. BigDecimal num1 = new BigDecimal(2.225667);//这种写法不允许,会造成精度损失 2. BigDecimal num2 = new BigDecimal( ...

  6. java.nio.ByteBuffer用法小结

    转载自  java.nio.ByteBuffer用法小结 在NIO中,数据的读写操作始终是与缓冲区相关联的.读取时信道(SocketChannel)将数据读入缓冲区,写入时首先要将发送的数据按顺序填入 ...

  7. jsoup解析HTML用法小结

    转载自   jsoup解析HTML用法小结 使用HttpClient+jsoup做采集器有一段时间了,发现jsoup很好用,而且还有很多方便的东西都没怎么用上.于是想根据官网上的cookbook来对j ...

  8. [转]ssh常用用法小结

    ssh常用用法小结 1.连接到远程主机: 命令格式 : ssh name@remoteserver 或者 ssh remoteserver -l name 说明:以上两种方式都可以远程登录到远程主机, ...

  9. Linux: chmod 和 chown用法小结

    chmod chmod指令是更改文件读写执行权限的. 文件权限可以通过ls -a或ll来看,在每个文件前有10个字符,第一个是d是文件夹,否则为一划.后面三组rwx,分别是读取,写入和执行的权限; 三 ...

最新文章

  1. Android 4.4 中 WebView 使用注意事项
  2. 在 Java 中应用设计模式 - Factory Method
  3. Java集合常见数据结构-栈/队列/数组/链表/红黑树
  4. Thinkphp 整合tcpdf
  5. EasyUI左右布居
  6. 压缩可以卸载吗_番禺街坊注意!微信发送高清大文件不压缩,网友:QQ可以卸载了?...
  7. Java引入依赖aar,如何将JAR依赖项包含到AAR库中
  8. 电脑芯片和服务器芯片,王思聪的服务器和我们的电脑有什么区别?
  9. Ubuntu/Linux备份/还原系统
  10. java实验计算机与光盘,JAVA实验指导资料.docx
  11. python删除word表格中的某一行_python-docx添加和删除表格行、列
  12. 单个dcm文件含有多帧数据,如何拆分成多个dcm文件
  13. JAVA设计模式之策略模式
  14. 【托业】【新托业TOEIC新题型真题】学习笔记4-题库一-P7
  15. 【计算机组成原理】学习笔记----第一章 计算机系统概述
  16. Java 8 effectively final
  17. 第一次进入页面,访问服务器图片报404,刷新或者回退重新进入,就可以加载图片。
  18. Windows 2008 R2 x64 Enterprise安装postgres (api-ms-win-crt-runtime-l1-1-0.dll、 0x80240017错误)
  19. 今天是2022年5月21日
  20. redis mysql 原子计数器_Redis原子计数器incr

热门文章

  1. 生产管理软件之看板的种类
  2. intel和AMD CPU性能对比(2016年CPU天梯图)组装电脑必读!
  3. php游戏简单模块,PHP编写的25个游戏脚本
  4. 干货|五分钟轻松入门眼动实验软件之Tobii Pro Lab
  5. 金融服务(银行证券机构方向)etl批量作业集群统一调度平台搭建
  6. html引用不了自定义字体,html5 – 自定义@ font-face不加载chrome(chrome自定义字体无法渲染)...
  7. 2020.05.20软件构造听课笔记
  8. 支持lodop的服务器,C-Lodop云打印
  9. scratch实现猫捉老鼠(上)
  10. 小白学Java基础案例(一)