日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

asp.net ajax回调函数

發布時間:2025/3/15 asp.net 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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
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回调函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。