[ajaxpro] ajax效果可以实现但是报错,还经常使ie假死的问题解决

来源:互联网 发布:贡贝黑猩猩战争 知乎 编辑:程序博客网 时间:2024/05/12 03:27

首先看一下报错的代码:

 

1.     添加 ajaxpro.2.dll 引用

具体下载地址   http://download.csdn.net/source/258423

 

2.     web.config 中加

 

<system.web>

 

    <httpHandlers>

      <add verb="*" path="*.ashx" type="AjaxPro.AjaxHandlerFactory,AjaxPro.2"/>

    </httpHandlers>

</system.web>

 

3.     Default2.aspx.cs  服务器端代码

 

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        AjaxPro.Utility.RegisterTypeForAjax(typeof(Default2));
    }

    [AjaxPro.AjaxMethod]
    public string GetServerTimeString()
    {
        System.Threading.Thread.Sleep(2000);
        return DateTime.Now.ToString();
    }
}

 

4.  Default2.aspx中的客户端代码

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" >
  4. <head id="Head1" runat="server">
  5.     <title>ajaxpro.2.dll 简单应用</title>
  6.     <script language="javascript" type="text/javascript">
  7.   
  8.        function getServerTime()
  9.        {
  10.           document.getElementById("div1").innerHTML = "请稍后,正在获取时间..";
  11.            document.getElementById("div1").innerHTML =Default2.GetServerTimeString().value;
  12.           
  13.        }
  14.        function doAutoSubmit(){
  15.         window.setTimeout("doAutoSubmit()",5000);
  16.         getServerTime();
  17.     }
  18.     </script>
  19. </head>
  20. <body onload=doAutoSubmit()>
  21.     <form id="form1" runat="server">
  22.     <div>
  23.     
  24.     <div id="div1">获取服务器端时间</div>  
  25.     </div>
  26.     </form>
  27. </body>
  28. </html>

以上代码效果已经实现了ajax无刷新更新,但是在第二次执行ajax方法的时候就开始报告错误,ie报“缺少对象”;ff报“this.timeout() 不是一个函数” ie没多不到半个小时就会假死。

 

 

 

检查了一下代码,主要问题第4步客户端代码这里。代码段中的“document.getElementById("div1").innerHTML =Default2.GetServerTimeString().value;” 是直接将后台ajax方法的返回值赋值给了页面变量。

 

检查后更改4步客户端代码为:


  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" >
  4. <head id="Head1" runat="server">
  5.     <title>ajaxpro.2.dll 简单应用</title>
  6.     <script language="javascript" type="text/javascript">
  7.        function ajax_callback(response)
  8.        {             
  9.              document.getElementById("div1").innerHTML = response.value;
  10.        }
  11.        function getServerTime()
  12.        {
  13.           document.getElementById("div1").innerHTML = "请稍后,正在获取..";
  14.           Default2.GetServerTimeString(ajax_callback);
  15.           
  16.        }
  17.        function doAutoSubmit(){
  18.         window.setTimeout("doAutoSubmit()",5000);
  19.         getServerTime();
  20.     }
  21.     </script>
  22. </head>
  23. <body onload=doAutoSubmit()>
  24.     <form id="form1" runat="server">
  25.     <div>
  26.     
  27.     <div id="div1">获取服务器端时间</div>
  28.       
  29.     </div>
  30.     </form>
  31. </body>
  32. </html>

  浏览器不在报错,也不会引起ie假死了。根源原因正在学习,明白之后再更新此文。。 

原创粉丝点击