zoukankan      html  css  js  c++  java
  • JavaScript与Web Service组合实现无刷新交互

    在.NET里,客户端与服务端进行数据交互我想大多数朋友都遇到过这样的问题,语言不同,又怎么来实现交互呢.客户端的 JavaScript是弱类型语言,服务端是强类型语言(如:C#,VB.NET,VC++,J#等).两个不同语言之间的交互是不是要借助于别的东西呢.我在这里可以告诉大家的是:答案不一定,但是借助别的东西的话是肯定可以达到数据交互的.比如ASP.NET AJAX框架他就支持.下面我将给大家简单介绍下.
    我在这里举一个放大层(div)的示例来说明:

        先建立一个ASP.NET AJAX项目(前提是你电脑上必须先安装ASP.NET AJAX框架),可以到http://ajax.asp.net去下载.
        首先我门来定义一个类:arr,提供两个成员分别为height,width,一个构造方法arr(int height,int width).
    public class arr
        
    {
            
    private int height;
            
    public int Height
            
    {
              
    get return height; }
              
    set { height = value; }
            }


            
    private int width;
            
    public int Width
            
    {
                
    get return width; }
                
    set { width = value; }
            }


            
    public arr(int h, int w)
            
    {
                
    this.Height = h;
                
    this.width = w;
            }

       }


       用面向对象来说的话arr现在可以看作为一个对象,而height,width则是arr对象的两个成员,因为我门为其他定义了属性(get,set),所以Height,Width则是arr对象的两个属性.这里说我想大家应该可以看懂吧.

       接着我门来建立一个Web Service(别告诉我你不知道Web Service是什么?):WebService.asmx,因为此Web Service要提供给客户端调用,我门必须为其提供[ScriptService],即:
     [ScriptService]  //
       public class WebService : System.Web.Services.WebService 
       
    {
           
    //..
       }

    然后我门在Web Service里定义一个方法wh(int height,int width),并为其提供两个参数,既图片的高度和宽度.
    [WebMethod]  //为方法提供[WebMethod]以让外部可以调用.
        public arr wh(int height, int width)
        
    {
            arr ar 
    = new arr(height, width);
            
    return ar;
        }


       到这里,我门的服务器就准备得差不多了,现在我门来看看客户端的JavaScript该怎么定义呢?
    我门建立一个ASP.NET窗体Default.aspx,并从工具箱里拽一个ScriptManager控件在这窗体上.然后转到html视图.编辑该控件的html源,该攻坚的ServiceReference 后的Path指向前面我门建立的Web Service,后面的InlineScript可以不要,不熟悉的朋友可以直接不管他,他的作用是在客户端显示生成的代理,详细见下:
          
    <asp:ScriptManager ID="ScriptManager1" runat="server">
              
    <Services>
                 
    <asp:ServiceReference Path="WebService.asmx" InlineScript="true" />
              
    </Services>
           
    </asp:ScriptManager>
    接着我门写一个div,并为其设置好背景图片,这样做的好处是当div很小的时候 就只能显示一小块图片,当div的大小改变后则显示图片就相对要大写,因为是设置的背景图片,背景图片为随着容器的大小自动适宜扩充.
      
    <div style=" 100px; height: 100px;background-color:red;background-image:url(1.jpg);" id="ss">

      学习过AJAX的朋友我想都知道,他的执行:发送请求--响应请求--返回消息--处理消息.
      那下面我门就来着手写客户端的JavaScript来调用Web Service,向其发送请求并处理返回数据.
       
    <script type="text/javascript">
        
    function sendRequest()
        
    {
           WebService.wh(
    300,300,CallBack);//这里是指调用WebService下的wh()方法,CallBack为方法的回调函数
        }

        
    function CallBack(result)
        
    {
            
    var ss=$get("ss");   //$get()为ajax里的关键字缩写,他等同于document.getElementById()方法
            ss.style.height=result.Height;
            ss.style.width
    =result.Width;
        }

        
    </script>
    接着我门来调用JavaScript的sendRequest()向服务端的Web Service发送请求.
    <input id="Button1" type="button" value="button" onclick="sendRequest();" />

    好了,到这里我门的服务端-客户端代码都实现了.我门来运行下试试.
    当然个编辑器里是不提供运行功能的哈,具体的效果大家可以照着我上述做个demo来看看就清楚.

    下载程序示例代码
  • 相关阅读:
    判断浏览器是否安装ActiveX控件
    浏览器判断及IE版本区分
    获取应用程序根目录
    C#读取csv通用类
    office文档转Txt文档
    合理使用.NET异常处理
    iis操作
    vim配置
    Spring的Annotation使用注意
    JdbcTemplate API备忘
  • 原文地址:https://www.cnblogs.com/beniao/p/1114022.html
Copyright © 2011-2022 走看看