zoukankan      html  css  js  c++  java
  • asp.net ajax回调函数

    javascript 调用后台类(webservice)的语法:

            类名.方法名(参数1,参数2,……,参数n,回调函数)

    调用上有两个差别:一是不需要使用变量接收返回值,二是要在所有参数后面加一个参数:回调函数。
    例如,有个类的方法,
    在后台调用是:

          string data = Webservice.GetDate(Para1,Para2);
    换到前台JavaScript调用时,就是如下的样子:首先引用webservice 如:

          <asp:ScriptManager ID="ScriptManager1" runat="server" >
                <Services>
                    <asp:ServiceReference Path="Userwebservice.asmx" />
                </Services>
            </asp:ScriptManager>

     

    Code

     function GetName()
    {
        var select=document.getElementById("ddlstUser");
        var empid=select.options[select.selectedIndex].value;  
        Webservice.Query(id,CallBackFunction);
    }
    那么,返回值到哪里去取呢?答案是到回调函数中,
            回调函数的原型是:回调函数名(返回值)
    当然,存储返回值变量的名字是开发人员随意取的,然后就可以在回调函数中使用这个返回值变量了。
    例如,接着上面程序,写一个函数在文本框中显示姓名:

    function CallBackFunction(result)
    {
       var name=document.getElementById("txtName");
       txtName.value=result.UserName;
    }
    则在这个函数中,result就含有Webservice.Query(Para1,Para2,CallBackFunction)的返回值。
    ------------------------------------------------------------------------------------------
    摘自文章:

          为什么不直接调用类中的方法,而非要经过WebService呢?

    上文我曾经说过,ASP.NET AJAX允许我们直接调用后台类中的方法,但是我们不提倡这样做,而是提倡经过WebService的过渡。其原因有如下几点:

    1.要使得某个类可以被JS调用,也需要在其中做一些修改,如增加一些属性(Attribute)等,这会对这些类造成一种“污染”。

    2.我们知道了,使用ASP.NET AJAX框架也需要从回调函数中获取返回值,而不是直接获取。考虑以下情况:如果某段JS需要调用三个后台方法完成一个操作,那么,就需要写三个回调函数。即要经过“调用第一个方法-第一个回调函数中调用第二个方法-第二个回调函数中调用第三个方法-第三个回调函数中取得返回值”。

    这个过程很麻烦。而使用WebService后,我们可以将这个三个方法封装到一个WebService方法里,因为WebService是支持“变量=类名.方法名”这种传统的调用方法的。这样经过WebService过渡,JS中只要一个回调函数就可以了。

    3.从本身特性上看,WebService比普通类更适合作为ASP.NET AJAX的后台方法。

  • 相关阅读:
    shell脚本学习
    docker容器的安装与使用
    admin源码分析
    ajax提交文件,django测试脚本环境书写,froms组件,钩子函数
    javascript语法 1.运算符 2. 流程控制 3. 函数 4. 四种变量 5. 数据类型的运用 6. js页面交互
    from提交数据,高级选择器,伪类选择器,前端样式等
    前端HTML介绍,标签介绍,基础选择器,CSS引入方法
    数据库知识总结
    day46
    day45
  • 原文地址:https://www.cnblogs.com/hubcarl/p/1570542.html
Copyright © 2011-2022 走看看