AJAX使用总结(Ajaxpro框架)

1.AJAX的异步调用产生的强烈UI体验,是否也曾令你惊叹,我也是用的不亦乐乎。AJAX调用经常会用在客户端前台从服务器端得到信息的一种手段,常常我们会连续多次进行异步调用,问题来了,如果在同一次执行序列(这里可以指一个函数,或者一系列语句)中,比如点击一个Button,需要;连续进行两次异步调用的话,那么第二次调用会彻底失败,回调函数不会执行,你期望的效果也不会出现。这个时候,你想到了什么?调试!(好,你就是三楼楼长!)可是调试完,依然得不到结论,回调函数就是不执行,你能咋的?!而且更有甚者,如果在两个异步调用中间加上一个中断,比如alert(),或者settimeout(这个函数还要注意时间间隔要设置的足够长,否则仍然不会响应第二个回调函数),这如何是好呢?我灵机一动,两个异步不行,我把一个改成同步的呢---------->OK!!看来硬的来不了,只能来软的,我换掉你不就OK了,最后适当调整同步和异步的调用位置,这样依然可以收到很好的效果。再者,要解决这个问题,也可以用我前面提到的setTimeout()函数。(估计是服务器接受客户端响应会过滤掉较短时间之内的其他响应吧。)

2.你是否在使用AJAX函数的时候,苦恼为什么每个页面都需要写AJAX函数,到处分散,不易管理维护啊。现在我告诉你不用发愁,我给你开个药方:
我们新建一个类,名字可以叫AjaxFunctions.注意:这个类一定要是可以序列化的,即加上[Serializable],这个是关键,然后你就可以在其中定义你得带jax.AjaxMethod的方法。然后在PageBase(页面基类)中注册这个方法Ajax.Utility.RegisterTypeForAjax(typeof(AjaxFunctions)).如果你想在Ajax方法中使用页基类的属性或者方法,你还可以让 AjaxFunctions继承PageBase,注意注册的地方不能放在构造函数中,应该重写Page的Load()函数.如果你需要在方法中使用Session,不要忘了加上 HttpSessionStateRequirement.ReadWrite。下面是一个例子:

Title

[Serializable]
 public class AjaxFunctions:PageBase
 {
  public AjaxFunctions()
  {
   
  }
  [AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequirement.ReadWrite)]
  public bool ValidateUser(string IDNo, string Password)
  {  
   try
   {
    RecuUser user = UserHandler.GetUerToValidate(IDNo, Password);    
    this.CurrentUser = user;
    if(user == null)
    {
     return false;
    }
    else
    {
     return true;   
    }
   }
   catch
   {    
    return false;
   }   
  }
}

3.在Ajax方法中使用Session不能直接使用,需要这么写:HttpContext.Current.Session[""];

4.往往我们在调用Ajax方法的过程中,可能会发生异常,这样回调会失败,但是页面不会看到任何效果,也不会转到错误页面,好像什么也没发生,作为程序员的我们当然希望它不管好坏总要做点反应吧,但是让你失望了:(,所以我建议,在Ajax方法中尽量将异常抛出来,可以使用Try...Catch,记录异常,但是Catch后仍然要Throw出来,这样在回调函数中我利用Response的Error属性:res.error,如:

Title  function DocumentsReady_CallBack(response)
  {
   if (response.error != null)
   {
    alert(response.error);//Redirect to Error Page...
    return;
   }
  }


5.有时候前台脚本会出现错误,这些错误可能无关紧要,也可能影响功能的使用,但是对于用户来说,脚本错误不会影响他浏览网页,但是功能就是用不了了,用户就不知道所以然了。所以当发生错误的时候,我们一定要提醒用户,需要立刻中止页面的使用,那么可以类似后台的ErrorHandler,我们可以利用Window.error这个事件,在PageBase中写以下代码:
  Title StringBuilder Onerror = new StringBuilder();
  Onerror.Append("<script language=javascript>/n");
  Onerror.Append("function clientPage_OnError(msg,url,l){/n");
  Onerror.Append("var errorMsg='There was an error on this page.';/n");
  Onerror.Append("errorMsg +='Error: ' + msg;/n");
  Onerror.Append("errorMsg +='URL: ' + url;/n");
  Onerror.Append("errorMsg +='Line: ' + l;/n");
  Onerror.Append("location.href('" + this.UrlBase + "/ErrorPage.aspx?ErrorMessage='+errorMsg);}/n");
  Onerror.Append("</script>");
  Page.RegisterClientScriptBlock("ErrorHandler",Onerror.ToString().Trim());
  Page.RegisterClientScriptBlock("Onerror","<script language=javascript>onerror = clientPage_OnError;</script>");
这样你可以在Error事件中处理任何脚本错误了,给用户一个友好的提示:)

AJAX使用总结(Ajaxpro框架)相关推荐

  1. 转 ajax.dll 与 ajaxpro.dll的用法

    转 ajax.dll 与 ajaxpro.dll的用法 文章分类:.net编程 ASP.NET AjaxPro的应用 1.首先下载AjaxPro组件.并将AjaxPro.dll引用到网站(或项目). ...

  2. dropdownlist ajax联动,asp.net省市三级联动的DropDownList+Ajax的三种框架(aspnet/Jquery/ExtJs)示例...

    本文主要列举了省市三级联动的DropDownList+Ajax的三种框架(aspnet/Jquery/ExtJs)示例.前段时间需要作一个的Web前端应用,需要用多个框架,一个典型的应用场景是省市三级 ...

  3. Web前端书单从HTML到JS到AJAX到HTTP从框架到全栈

    前言:技术书阅读方法论 一.速读一遍(最好在1~2天内完成) 人的大脑记忆力有限,在一天内快速看完一本书会在大脑里留下深刻印象,对于之后复习以及总结都会有特别好的作用. 对于每一章的知识,先阅读标题, ...

  4. 转 ajax.dll 与 ajaxpro.dll的用法

    ASP.NET AjaxPro的应用 1.首先下载AjaxPro组件.并将AjaxPro.dll引用到网站(或项目). 2.修改Web.config.在 <system.web> 元素中添 ...

  5. ajax的11个框架

    本文转载自 : www.iteye.com AJAX(Asynchronous JavaScript and XML,异步 JavaScript 和 XML),是创建交互式 Web 应用的主要开发技术 ...

  6. ajax异步超时,AjaxPro实现异步调用,解决浏览器假死及超时问题(示例代码)

    平时使用AjaxPro的时候基本上非常easy var msg = UseClass.Method(argument).value; 由于后台响应比較慢,所以加了个"loading" ...

  7. TP框架增删改查需要掉ajax么6,TP6框架--EasyAdmin学习笔记:实现数据库增删查改

    这是我写的学习EasyAdmin的第三章,这一章我给大家分享下如何进行数据库的增删查改 上一章链接:点击这里前往 上一章我们说到,我仿照官方案例,定义了一条路由goodsone和创建了对应数据库,我们 ...

  8. ajax pro,关于AjaxPro的用法

    1.添加引用AjaxPro.2.dll到项目中 2.添加webconfig iis6添加 在中添加: iis7添加在下: 3.在page_Load()事件中加入: AjaxPro.Utility.Re ...

  9. AjaxPro Ajax.Net

    1,Ajax是什么 Ajax,异步JavaScript与XML,是使用客户端脚本与Web服务器交换数据的Web应用开发方法.这样,Web页面不用打断交互流程进行重新加裁,就可以动态地更新.使用Ajax ...

最新文章

  1. Tomcat启动项目时内存溢出问题如何解决
  2. 【EF Code First】 一对一、一对多的多重关系配置
  3. kettlejava脚本的api_Java调用自己开发的Kettle plugin插件
  4. 我写的一个给time_t赋值的小函数
  5. python释放变量内存_Python尚学堂高淇|1113引用的本质栈内存,堆内存,内存的示意图,标识符,变量的声明初始化,垃圾回收机制...
  6. 收集18个高大上的浏览器小技巧
  7. Merge k Sorted Lists leetcode java
  8. c 语言 strcmpy的实现
  9. mysql没有group by_MySQL:不在GROUP BY中
  10. 使用WndProc来处理消息
  11. 信域安全云网产品架构
  12. 电感式传感器的原理大白话
  13. 计算机表格折线图添加图例,怎么用EXCEL表格数据做折线图-如何用excel做折线图添加系列...
  14. 424. Longest Repeating Character Replacement
  15. Discuznbsp;x2.5单页制作的教程
  16. ElasticSearch简单使用
  17. mysql修改配置文件进行优化
  18. 消防应急疏散通道问题1(难度系数3)
  19. DS18b20温度值换算
  20. AI行业精选日报_人工智能(12·16)

热门文章

  1. 利用Python实现“指尖陀螺”,让你释放压力
  2. 锤子M1L评测:硬件配置全“满血”,操作系统继续出众
  3. 即时通讯服务 发送图片 语音,视频 实现方式。
  4. C语言 输入字符 ,判断是否为字母(包括大小写)
  5. “东数西算”工程来了!模组厂商如何助力打造5G+AIoT数智世界?
  6. 皮搋子的正确使用方法:如何疏通蹲便器
  7. 认识反射——Kotlin
  8. Filebeat+Kafka+ELK日志采集(五)——Elasticsearch
  9. Excel里科学计数法7.07E-05的含义
  10. docker 集群中 nginx 配置 php 需要注意的地方