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>
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回调函数相关推荐
- 对ajax回调函数的研究
假如你现在还在为自己的技术担忧,假如你现在想提升自己的工资,假如你想在职场上获得更多的话语权,假如你想顺利的度过35岁这个魔咒,假如你想体验BAT的工作环境,那么现在请我们一起开启提升技术之旅吧,详情 ...
- java如何构造ajax回调参数,jQuery实现ajax回调函数带入参数的方法示例
本文实例讲述了jQuery实现ajax回调函数带入参数的方法.分享给大家供大家参考,具体如下: 不带参数的写法: function pass(htmlId,auditingFlag){ var url ...
- ajax回调函数有时成功有时失败,javascript - Ajax 回调函数行为随机。我做错了什么?...
我有以下行为随机的 ajax 函数.有时会显示警报 success finally.在其他情况下,第二个警报是 显示 Failure: my status is 500. promptId 从调用函数 ...
- 解决ajax回调函数无返回值得问题
解决ajax回调函数无返回值得问题 参考文章: (1)解决ajax回调函数无返回值得问题 (2)https://www.cnblogs.com/lzxlfly/p/5879167.html (3)ht ...
- jQuery AJAX回调函数this指向问题
了解JavaScript的人都知道JavaScript的this不总是指向当前对象,函数或类中的this指向与调用这个函数的对象以及上下文环境是息息相关的.如在全局作用域调用一个含this的对象,此时 ...
- Ajax回调函数无反应及进erro问题记录。
一:问题描述 ajax回调函数,明明后台返回成功了,前端一直进Erro 二:问题反思 1.前端知识体系认知的不够完善.一直做后端的我,总感觉ajax套用模版就好,普通的模版,只有success,没写e ...
- spring返回数据使用ajax,【spring 后台跳转前台】使用ajax访问的后台,后台正常执行,返回数据,但是不能进入前台的ajax回调函数中...
问题1: 使用ajax访问的后台,后台正常执行,并且正常返回数据,但是不能进入前台的ajax回调函数中 问题展示: 问题解决: 最后发现是因为后台的方法并未加注解:@ResponseBody,导致方法 ...
- ajax回调函数的返回值,使用ajax和回调函数向函数传递/返回值
我试图读p_info函数返回从函数getproductInfo包含ajax调用,但我得到未定义的值.我使用回调函数来实现这一点,但仍然无法正常工作.我错在哪里?使用ajax和回调函数向函数传递/返回值 ...
- ajax回调函数 异步延迟
回调函数有延迟.加上 async:false之后解决问题. 不加的话.先return,然后才执行回调函数. /** 检测是否有导出权限 */function isExpExcelAdmin(){var ...
最新文章
- 《调色师手册:电影和视频调色专业技法(第2版)》——调色师该何时介入?...
- 科大星云诗社动态20210511
- 【速看,双100%】剑指 Offer 14- I. 剪绳子 I
- 通过计算机名访问linux
- CSS基础——浮动(float)【学习笔记】
- C++基础::shared_ptr 编程细节(二)
- 记一次route配置不起作用的问题解决过程
- OMNeT 例程 Tictoc16 学习笔记
- axure中继器求和_Axure案例:用中继器做一个2级折叠菜单
- html分享到微博,h5页面分享到微信、朋友圈、新浪微博、QQ空间、QQ好友组件
- idb 怎么回复mysql_mysql利用frm和idb文件恢复数据库
- XJTU大学计算机编程作业题 第9周
- 史上最全的html标签属性用法对照表
- java 操作图片 叠加图片 覆盖
- iebook 发布到网站 独家秘笈
- vnc远程桌面,六款好用又免费的vnc远程桌面软件
- 专精特新企业和高新技术企业的区别及认定好处,补贴20-100万
- 视频转gif(二):后端,云函数nodejs实现多图转gif
- vscode 找不到 python 解析器
- 服务器bios修改uefi,服务器bios设置uefi
热门文章
- 解决问题:无法对 System程序集 添加Fakes程序集
- Algorithm(1) - Karatsuba multiplication
- 技术要求→物理安全→防盗窃和防破坏
- activiti5第五弹 serviceTask中的webserviceTask 以及 shellTask
- Hadoop集群的kerberos认证
- linux安装程序乱码,linux远程桌面乱码解决及引起的相关问题、字库安装
- 插入网站连接_带你了解网站设计的五个基本步骤
- 混凝土静力受压弹性模量试验计算公式_【小马建考干货】天天送检,你知道混凝土试块检测哪些性能标指吗?...
- 旅游流的概念_2020年去张家界凤凰古城旅游亲身体验经历分享——实用攻略(图文)...
- matlab欧拉法程序,欧拉法matlab程序.doc