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
public class UserWebService : System.Web.Services.WebService {

public UserWebService () {

//如果使用设计的组件,请取消注释以下行 
        //InitializeComponent(); 
    }

public class User
    {
        public User(int id, string name)
        {
            this.UserId = id;
            this.UserName = name;
            
        }

private int _userId;
        public int UserId
        {
            get { return _userId; }
            set { _userId = value; }
        }

private string _userName;
        public string UserName
        {
            get { return _userName; }
            set { _userName = value; }
        }

}

public  DataSet QueryUserInfo(string commandText)
    {
        using (OleDbConnection conn = new OleDbConnection(StrCon))
        {
            using (OleDbDataAdapter sda = new OleDbDataAdapter(commandText, conn))
            {
                using (DataSet ds = new DataSet())
                {
                    sda.Fill(ds);
                    return ds;
                }
            }
        }
    }

[WebMethod]
    public  User Query(int Id)
    {
        string commandText = "Select * from User where userId=" + Id;
        DataTable dt = QueryUserInfo(commandText).Tables[0];
        User user = new User(int.Parse(dt.Rows[0][0].ToString()),dt.Rows[0][1].ToString());
        return user;
    }

}

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的后台方法。

转载于:https://www.cnblogs.com/hubcarl/archive/2009/09/20/1570542.html

asp.net ajax回调函数相关推荐

  1. 对ajax回调函数的研究

    假如你现在还在为自己的技术担忧,假如你现在想提升自己的工资,假如你想在职场上获得更多的话语权,假如你想顺利的度过35岁这个魔咒,假如你想体验BAT的工作环境,那么现在请我们一起开启提升技术之旅吧,详情 ...

  2. java如何构造ajax回调参数,jQuery实现ajax回调函数带入参数的方法示例

    本文实例讲述了jQuery实现ajax回调函数带入参数的方法.分享给大家供大家参考,具体如下: 不带参数的写法: function pass(htmlId,auditingFlag){ var url ...

  3. ajax回调函数有时成功有时失败,javascript - Ajax 回调函数行为随机。我做错了什么?...

    我有以下行为随机的 ajax 函数.有时会显示警报 success finally.在其他情况下,第二个警报是 显示 Failure: my status is 500. promptId 从调用函数 ...

  4. 解决ajax回调函数无返回值得问题

    解决ajax回调函数无返回值得问题 参考文章: (1)解决ajax回调函数无返回值得问题 (2)https://www.cnblogs.com/lzxlfly/p/5879167.html (3)ht ...

  5. jQuery AJAX回调函数this指向问题

    了解JavaScript的人都知道JavaScript的this不总是指向当前对象,函数或类中的this指向与调用这个函数的对象以及上下文环境是息息相关的.如在全局作用域调用一个含this的对象,此时 ...

  6. Ajax回调函数无反应及进erro问题记录。

    一:问题描述 ajax回调函数,明明后台返回成功了,前端一直进Erro 二:问题反思 1.前端知识体系认知的不够完善.一直做后端的我,总感觉ajax套用模版就好,普通的模版,只有success,没写e ...

  7. spring返回数据使用ajax,【spring 后台跳转前台】使用ajax访问的后台,后台正常执行,返回数据,但是不能进入前台的ajax回调函数中...

    问题1: 使用ajax访问的后台,后台正常执行,并且正常返回数据,但是不能进入前台的ajax回调函数中 问题展示: 问题解决: 最后发现是因为后台的方法并未加注解:@ResponseBody,导致方法 ...

  8. ajax回调函数的返回值,使用ajax和回调函数向函数传递/返回值

    我试图读p_info函数返回从函数getproductInfo包含ajax调用,但我得到未定义的值.我使用回调函数来实现这一点,但仍然无法正常工作.我错在哪里?使用ajax和回调函数向函数传递/返回值 ...

  9. ajax回调函数 异步延迟

    回调函数有延迟.加上 async:false之后解决问题. 不加的话.先return,然后才执行回调函数. /** 检测是否有导出权限 */function isExpExcelAdmin(){var ...

最新文章

  1. 《调色师手册:电影和视频调色专业技法(第2版)》——调色师该何时介入?...
  2. 科大星云诗社动态20210511
  3. 【速看,双100%】剑指 Offer 14- I. 剪绳子 I
  4. 通过计算机名访问linux
  5. CSS基础——浮动(float)【学习笔记】
  6. C++基础::shared_ptr 编程细节(二)
  7. 记一次route配置不起作用的问题解决过程
  8. OMNeT 例程 Tictoc16 学习笔记
  9. axure中继器求和_Axure案例:用中继器做一个2级折叠菜单
  10. html分享到微博,h5页面分享到微信、朋友圈、新浪微博、QQ空间、QQ好友组件
  11. idb 怎么回复mysql_mysql利用frm和idb文件恢复数据库
  12. XJTU大学计算机编程作业题 第9周
  13. 史上最全的html标签属性用法对照表
  14. java 操作图片 叠加图片 覆盖
  15. iebook 发布到网站 独家秘笈
  16. vnc远程桌面,六款好用又免费的vnc远程桌面软件
  17. 专精特新企业和高新技术企业的区别及认定好处,补贴20-100万
  18. 视频转gif(二):后端,云函数nodejs实现多图转gif
  19. vscode 找不到 python 解析器
  20. 服务器bios修改uefi,服务器bios设置uefi

热门文章

  1. 解决问题:无法对 System程序集 添加Fakes程序集
  2. Algorithm(1) - Karatsuba multiplication
  3. 技术要求→物理安全→防盗窃和防破坏
  4. activiti5第五弹 serviceTask中的webserviceTask 以及 shellTask
  5. Hadoop集群的kerberos认证
  6. linux安装程序乱码,linux远程桌面乱码解决及引起的相关问题、字库安装
  7. 插入网站连接_带你了解网站设计的五个基本步骤
  8. 混凝土静力受压弹性模量试验计算公式_【小马建考干货】天天送检,你知道混凝土试块检测哪些性能标指吗?...
  9. 旅游流的概念_2020年去张家界凤凰古城旅游亲身体验经历分享——实用攻略(图文)...
  10. matlab欧拉法程序,欧拉法matlab程序.doc