zoukankan      html  css  js  c++  java
  • .net Ajax无刷新技术

    早就听说Ajax技术了,传说中是一种很牛的东西,号称无刷新,其实是在web上通过javascript,使用异步的xmlhttp请求,实现无刷新的web界面。可惜一直没有体验过, 先后听做PHP的朋友用过PHP的Ajax开发包,而且做了很多很酷的东西,使小生羡慕不已。

          今天下了一个.net Ajax开发包,该开发包包括ASP2.0和目前ASP1.1版使用的Ajax,详细地址参见http://ajax.schwarz-interactive.de/,接下来,开工。

     1. 新建一个项目,在引用中添加引用Ajax.dll,Ajax.dll位于下载的压缩包里面。

     2.建立HttpHandler,在web.config里面加上


    <configuration>
      
    <system.web>
        
    <httpHandlers>
        
    <add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax" />
        
    </httpHandlers>  
        
      
    <system.web>
    </configuration>

    3.新建一个类DemoMethods,这个类实现获取客户端MAC地址:

    using System;
    using System.Web;

    namespace AjaxSample
    {
     
    /// <summary>
     
    /// Summary description for Methods.
     
    /// </summary>

     public class DemoMethods
     
    {
      
      [Ajax.AjaxMethod]
      
    public string GetCustomerMac(string clientIP) //这里输入客户端IP,这个函数知识测试用,你也可以写一个其他的简单一点的函数代替
      
       
    string mac = "";

       System.Diagnostics.Process process 
    = new System.Diagnostics.Process();
       process.StartInfo.FileName 
    = "nbtstat";
       process.StartInfo.Arguments 
    = "-a "+clientIP;
       process.StartInfo.UseShellExecute 
    = false;
       process.StartInfo.CreateNoWindow 
    = true;
       process.StartInfo.RedirectStandardOutput 
    = true;
     
       process.Start();
     
       
    string output = process.StandardOutput.ReadToEnd();
       
    int length = output.IndexOf("MAC Address = ");

       
    if(length>0)
       
    {
        mac 
    = output.Substring(length+1417);
       }

     
       process.WaitForExit();
     
       
    return mac.Replace("-""").Trim();
      }

     }


    }
     

    4.写javascript,新建一个名为default.js文件如下,
    function GetMac()
    {
     
    var clientIP="192.168.0.1";
     //document.getElementById(
    "Mac").value=DemoMethods.GetCustomerMac(clientIP).value
     alert(DemoMethods.GetCustomerMac(clientIP).value);
    }

    5.在某个Aspx页面放上一个html 的button

    在页面上<head>中引用default.js :   <script language="javascript" src="default.js"></script>

    在INPUT的onclick事件中加上onclick="javascript:GetMac()"

    <INPUT style="Z-INDEX: 101; LEFT: 392px; POSITION: absolute; TOP: 176px" type="button"

        value="客户端获取IP" onclick="javascript:GetMac();">


    6.在page页面的Page_Load事件中加上

    private void Page_Load(object sender, System.EventArgs e)
     
    {
       
    // 在此处放置用户代码以初始化页面
       Ajax.Utility.RegisterTypeForAjax(typeof(AjaxSample.DemoMethods));
      }

    注意:typeof(AjaxSample.DemoMethods)中,AjaxSample是命名空间,DemoMethods是要包含要调用方法的类,即上面第3步.新建类DemoMethods

    (2007-6-23)文章修改:后面第7步部现在的版本不需要了,当时写这篇blog的时候是05年,现在变化已经很多了,推荐使用ajaxPro,
    demo下载



    7.修改Global.asax的Application_Start事件,设置Ajax的HandlerPath :

    protected void Application_Start(Object sender, EventArgs e)
      {
         Ajax.Utility.HandlerPath 
    = "ajax";
      }



     运行看看效果。是不是没有刷新就在服务器端取到客户端的MAC地址??

           需要注意的是:该版本的.net Ajax需要手工在中Global.asax加上Ajax.Utility.HandlerPath = "ajax"; 配置文件web.config必须加上HttpHandler的配置信息!

           该开发包的新版本还没有来得及体验,估计新版本中会方便一些,可能会去掉手动的设置Global.asax的Application_Start事件中加上Ajax.Utility.HandlerPath = "ajax";以及其他麻烦的设置!期待ing……

  • 相关阅读:
    C#发邮件
    C#循环遍历mysql
    【转】C#获取当前日期时间(转)
    C#设置DataGridView控件的标题行的高度并且居中显示
    c#窗体实现验证码
    Git 常用命令清单,掌握这些,轻松驾驭版本管理
    Vue 常见面试问题,你可能都知道,但能答好吗?
    Node 爬虫,批量爬取头条视频并保存
    Node 爬虫,批量下载并保存图片
    NodeJS MySql 执行多条sql语句
  • 原文地址:https://www.cnblogs.com/yzwdli/p/891490.html
Copyright © 2011-2022 走看看