亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

asp.net中javascript與后臺c#交互

2024-07-10 13:29:34
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了asp.net中javascript與后臺c#交互,需要的朋友可以參考下

最近做一個小項目,網頁中嵌入google maps,輸入經緯度坐標可以定位地圖位置并加注標記,點擊標記獲取遠端攝像頭數據并在視頻窗口實現播放。在實際操作過程中,由于經緯度數據和視頻登錄的用戶名密碼數據均要從后臺數據庫中提取,而第三版的google maps api又是在javascript中實現的,因此不可避免的需要前端腳本與后臺進行交互。由于是在asp.net中實現,故問題演化成asp.net中javascript與后臺c#如何進行交互。

C#代碼與javaScript函數的相互調用主要有四個方面:

1.如何在JavaScript訪問C#函數?

2.如何在JavaScript訪問C#變量?

3.如何在C#中訪問JavaScript的已有變量?

4.如何在C#中訪問JavaScript函數?

一、javaScript函數中執行C#代碼中的函數: 方法一:頁面和頁面類結合

1、函數聲明為public

后臺代碼(把public改成protected也可以)

 

  1. public string ss() 
  2.  
  3.  
  4. return("a"); 
  5.  

2、在html里用<%=ss()%>可以調用//是C#中后臺的函數名稱

前臺腳本

 

 
  1. <script language=javascript> 
  2.  
  3. var a = "<%=ss()%>";//JavaScript中調用C#后臺的函數 
  4.  
  5. alert(a); 
  6.  
  7. </script>  

方法二: JavaScript異步調用定義在ASP.Net頁面中的方法

1.將該方法聲明為公有(public);

2.將該方法聲明為類方法(C#中的static,VB.NET中的Shared),而不是實例方法;

3.將該方法添加【WebMethod】屬性

4.將頁面中ScriptManager控件的EnablePageMethods屬性設置為true;

5.在客戶端使用如下JavaScript語法調用該頁面方法

PageMethods.[MethodName](param1,param2,...,callbackFunction);

6.為客戶端異步調用指定回調函數,在回調函數中接受返回值并進一步處理;

7.添加 using System.Web.Services;

示例:

前臺JavaScript代碼

 

 
  1. <html xmlns="http://www.w3.org/1999/xhtml"
  2. <head runat="server"
  3. <title>無標題頁</title> 
  4.  
  5. <script type="text/javascript"
  6. function JsCallCSharp(param1) 
  7. {  
  8. PageMethods.sayhell(param1,onSayHelloSucceeded);//sayhell是后臺標注了【webMethod】屬性的方法 param1是傳入該方法的參數,onSayHelloSucceeded是回調函數主要是對后臺返回的結果進一步處理 
  9. }  
  10. function onSayHelloSucceeded(result)//綁定的回調函數  
  11. {  
  12. alert(result); 
  13. }  
  14.  
  15. </script> 
  16.  
  17. </head> 
  18. <body> 
  19. <form id="form1" runat="server"
  20. <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">//ScriptManager控件管理腳本的,注意設置EnablePageMethods="true"此屬性 
  21. </asp:ScriptManager> 
  22. <div> 
  23. <input type="button" onclick="JsCallCSharp('hello')" /> 
  24. </div> 
  25. </form> 
  26. </body> 
  27. </html> 

后臺代碼(.cs文件)

 

 
  1. using System; 
  2. using System.Configuration; 
  3. using System.Data; 
  4. using System.Linq; 
  5. using System.Web; 
  6. using System.Web.Security; 
  7. using System.Web.UI; 
  8. using System.Web.UI.HtmlControls; 
  9. using System.Web.UI.WebControls; 
  10. using System.Web.UI.WebControls.WebParts; 
  11. using System.Xml.Linq; 
  12. using System.Web.Services;//添加web服務引用 
  13.  
  14. public partial class _Default : System.Web.UI.Page 
  15. protected void Page_Load(object sender, EventArgs e) 
  16.  
  17.  
  18. [WebMethod]//標示為web服務方法屬性 
  19. public static string sayhell(string say)//注意函數的修飾符,只能是靜態的 
  20. return say; 

方法三: JavaScript異步調用定義在Web服務類中的方法

1.添加一個web服務標示該服務為 允許使用 ASP.NET AJAX 從腳本中調用此 Web 服務

對應屬性為[System.Web.Script.Services.ScriptService]

2.將該方法聲明public并將該方法標示為[webMethod]屬性方法

3.在頁面中ScriptManager控件并添加web服務引用

4.在客戶端使用如下JavaScript語法調用web服務方法

WebService.HelloWorld("helloWord",function(res)//Webservice是web服務頁面名稱

HelloWord為web服務頁面類中的方 法,function為回調JavaScript函數主要是處理返回的結果 { alert(res); });

示例:

頁面代碼

 

 
  1. <html xmlns="http://www.w3.org/1999/xhtml"
  2. <head runat="server"
  3. <title>無標題頁</title> 
  4.  
  5. <script type="text/javascript"
  6. function JsCallCSharp(param1) 
  7. {  
  8. PageMethods.sayhell(param1,onSayHelloSucceeded); 
  9. }  
  10. function onSayHelloSucceeded(result) 
  11. {  
  12. alert(result); 
  13. }  
  14.  
  15. //該方法為調用的函數 
  16. function JsCallWebService() 
  17. WebService.HelloWorld("helloWord",function(res)//調用web服務 
  18. alert(res); 
  19. }); 
  20. </script> 
  21.  
  22. </head> 
  23. <body> 
  24. <form id="form1" runat="server"
  25. <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" > 
  26. <Services><asp:ServiceReference Path="~/WebService.asmx" /></Services>//注意要引用web服務 
  27. </asp:ScriptManager> 
  28. <div> 
  29. <input type="button" onclick="JsCallCSharp('hello')" value="測試C#后臺頁" /> 
  30. <input type="button" onclick="JsCallWebService()" value="測試web后臺類" /> 
  31. </div> 
  32. </form> 
  33. </body> 
  34. </html> 

web服務后臺代碼

 

 
  1. using System; 
  2. using System.Collections; 
  3. using System.Linq; 
  4. using System.Web; 
  5. using System.Web.Services; 
  6. using System.Web.Services.Protocols; 
  7. using System.Xml.Linq; 
  8.  
  9. /// <summary> 
  10. ///WebService 的摘要說明 
  11. /// </summary> 
  12. [WebService(Namespace = "http://tempuri.org/")] 
  13. [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
  14. //若要允許使用 ASP.NET AJAX 從腳本中調用此 Web 服務,請取消對下行的注釋。  
  15. [System.Web.Script.Services.ScriptService]//注意要添加該標示 
  16. public class WebService : System.Web.Services.WebService { 
  17.  
  18. public WebService () { 
  19.  
  20. //如果使用設計的組件,請取消注釋以下行  
  21. //InitializeComponent();  
  22.  
  23. [WebMethod]//方法要標示的屬性 
  24. public string HelloWorld(string result) { 
  25. return result; 
  26.  

二、JavaScript訪問C#變量

方法一:

a、通過頁面上隱藏域訪問,可以在后臺把c#變量值保存到隱藏文本域當中。

b、然后在前臺javascript當中直接取隱藏文本域的值。

document.getElementByIdx_x('xx').value

方法二:

a、在服務器端變量賦值后在頁面注冊腳本

Page.RegisterStartScript(" ","");

value是后臺變量,然后javascript中可以直接訪問vary值,它的值就是后臺變量value的值,這種方式只不過是能過一種間接的方式來訪問c#變量。

三、C#中訪問JavaScript的已有變量

方法一:

前臺使用服務器文本控件隱藏域,將js變量值寫入其中;后臺直接通過控件id訪問和調用,即后臺用Request["id"]來獲取值。

方法二:

可以用cookie或session存儲變量值,后臺直接使用

使用session以下是代碼片段:

 

 
  1. .cs  
  2. if (Session["siteName"] == null)//判斷是否存在指定Key值的Session變量  
  3. Session["siteName"] = "";//如果不存在則創建Session變量  
  4. //給Session["siteName"]變量賦值  
  5. .aspx  
  6. var siteName="<%=Session["siteName"] %>"

四、C#代碼執行JavaScript函數和調用JavaScript函數

方法一:C#中使用ScriptManager.RegisterStartupScript(this, this.GetType(), "edit", "CSharpCallJs('"+param1+"','"+param2+"')",

示例:

腳本函數

 

 
  1. function CSharpCallJs(param1,param2)  
  2. {  
  3. alert(param1 + param2);  
  4. }  

頁面后臺代碼

 

 
  1. ScriptManager.RegisterStartupScript(thisthis.GetType(), "edit""CSharpCallJs('" + param1 + "','" + param2 + "');"true);//關鍵代碼調用頁面腳本函數的代碼 

方法二:使用隱藏域或者Literal控件,在前臺使用js腳本把一些js函數控制的值寫進隱藏域或者Literal控件,然后前臺使用Hidden.Value或者Literal.Text讀取前臺值。

以下是代碼片段:

 

 
  1. .aspx  
  2.  function GetTitleID(obj)  
  3.  {  
  4.  sTitleID=obj  
  5.  if(sTitleID!=null)  
  6.  document.getElementByIdx_x("HiddenField1").value=type+','+sTitleID;  
  7.  else 
  8.  document.getElementByIdx_x("HiddenField1").value=type+',0';  
  9.  }  
  10.  .cs  
  11.  string hiddenValue = this.HiddenField1.Value; 

方法三:Page.RegisterStartupScript("function","");

以上就是asp.net中javascript與后臺c#交互的方法,每一種情況都有對應的解決方法,希望能夠幫助到大家。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲女在线观看| 欧美精品九九久久| 日韩国产中文字幕| 91九色视频在线| 欧美亚洲视频一区二区| 日韩中文字幕在线看| 亚洲人成在线观看| 国产成人综合亚洲| 欧美激情女人20p| 日本道色综合久久影院| 日本高清久久天堂| 国产精品久久久久久久久免费| 日韩国产高清污视频在线观看| 精品人伦一区二区三区蜜桃免费| 欧美成人午夜免费视在线看片| 懂色aⅴ精品一区二区三区蜜月| 欧美激情视频在线免费观看 欧美视频免费一| 欧亚精品中文字幕| 色先锋久久影院av| 日本sm极度另类视频| 亚洲国产一区二区三区四区| 自拍偷拍亚洲在线| 91亚洲国产成人精品性色| 亚洲欧美日韩图片| 最近2019免费中文字幕视频三| 久久久免费高清电视剧观看| 日韩av观看网址| 国产成人在线一区| 久久国产一区二区三区| 亚洲欧美日韩国产成人| 国产精品九九九| 国产在线播放不卡| 日韩成人黄色av| 成人激情视频小说免费下载| 欧美韩国理论所午夜片917电影| 国产精品视频久久| 欧洲成人免费视频| 成人免费视频在线观看超级碰| 亚洲国产成人久久综合| 欧美精品在线极品| 亚洲区中文字幕| 少妇高潮久久久久久潘金莲| 国产福利成人在线| 国产美女直播视频一区| 久久九九亚洲综合| 国产精品网红直播| 国产精品第2页| 亚洲一区二区三| 亚洲欧美日韩爽爽影院| 日韩成人在线电影网| 日韩精品在线观看视频| 欧美精品在线视频观看| 欧美性猛交xxxx黑人| 一区二区三区国产在线观看| 日韩免费在线观看视频| 国产精品入口免费视| 亚洲国产成人精品一区二区| 久久久久女教师免费一区| 欧美—级a级欧美特级ar全黄| 亚洲人成毛片在线播放| 国产精品视频99| 欧美视频一区二区三区…| 欧美精品免费在线| 538国产精品一区二区在线| 亚洲综合精品伊人久久| 亚洲一区亚洲二区亚洲三区| 国产精品在线看| 国产精品福利片| 夜夜嗨av色综合久久久综合网| 欧美激情亚洲另类| 这里只有视频精品| 国产精品午夜一区二区欲梦| 成人中文字幕+乱码+中文字幕| 国自在线精品视频| 国内精品视频久久| 影音先锋欧美在线资源| 国产91|九色| 国产成人精品免费久久久久| 国产精品综合网站| 亚洲女人被黑人巨大进入al| 欧美成年人网站| 亚洲影视九九影院在线观看| 久久影视电视剧凤归四时歌| 成人羞羞国产免费| 午夜精品久久久久久久99热浪潮| 国产精品亚洲激情| 欲色天天网综合久久| 日本精品免费观看| 日本91av在线播放| 国产一区二区三区免费视频| 亚洲一区www| 黑人巨大精品欧美一区二区免费| 日韩在线欧美在线| 国产精品久久久久久久av电影| 欧美日韩一区二区三区| 中文字幕一区二区三区电影| 日韩av影视综合网| 亚洲深夜福利网站| 亚洲激情视频在线观看| 亚洲欧美一区二区三区在线| 91国语精品自产拍在线观看性色| 久久久免费精品视频| 国产精品久久久久不卡| 91极品女神在线| 久久久久久国产免费| 青青草原一区二区| 亚洲成年人在线| 成人福利在线观看| 日本高清视频一区| 欧美成aaa人片免费看| 久久久久久久久久av| 国产精品揄拍一区二区| 色婷婷综合成人av| 日韩成人中文电影| 亚洲激情电影中文字幕| 久久的精品视频| 日韩高清电影好看的电视剧电影| 欧美激情亚洲另类| 午夜精品久久久久久久99黑人| 欧美在线播放视频| 国产精自产拍久久久久久| 92福利视频午夜1000合集在线观看| 91精品久久久久久久久久久久久久| 丰满岳妇乱一区二区三区| 国内精品免费午夜毛片| 国产精品福利片| 日韩在线观看精品| 欧美高清视频免费观看| 蜜月aⅴ免费一区二区三区| 久热精品视频在线免费观看| 亚洲福利视频二区| 亚洲国产高清福利视频| 日韩大陆毛片av| 国产精品亚洲网站| 成人黄色中文字幕| 91成人国产在线观看| 成人黄色av免费在线观看| 亚洲欧洲在线播放| 国产mv免费观看入口亚洲| 亚洲第一区第二区| 欧美日韩成人黄色| 岛国精品视频在线播放| 亚洲国产又黄又爽女人高潮的| 久久香蕉国产线看观看网| 国产在线高清精品| 欧美激情视频网址| 91精品在线一区| 欧美国产日产韩国视频| 国产精品户外野外| 国产成人精品日本亚洲专区61| 亚洲欧美中文在线视频| 亚洲人成欧美中文字幕| 久久夜色精品亚洲噜噜国产mv| 久久精品视频va| 欧美性猛交xxxx免费看漫画| 亚洲一区二区三区毛片| xxav国产精品美女主播| 青青草精品毛片| 亚洲美女黄色片| 国产不卡视频在线| 国产精品福利在线观看网址| 欧美黑人国产人伦爽爽爽| 国产成人一区二区三区| 欧美性xxxxxx|