最近做一個小項目,網頁中嵌入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也可以)
public string ss() { return("a"); }2、在html里用<%=ss()%>可以調用//是C#中后臺的函數名稱
前臺腳本
<script language=javascript> var a = "<%=ss()%>";//JavaScript中調用C#后臺的函數 alert(a); </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代碼
<html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title>無標題頁</title> <script type="text/javascript"> function JsCallCSharp(param1) { PageMethods.sayhell(param1,onSayHelloSucceeded);//sayhell是后臺標注了【webMethod】屬性的方法 param1是傳入該方法的參數,onSayHelloSucceeded是回調函數主要是對后臺返回的結果進一步處理 } function onSayHelloSucceeded(result)//綁定的回調函數 { alert(result); } </script></head><body> <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">//ScriptManager控件管理腳本的,注意設置EnablePageMethods="true"此屬性 </asp:ScriptManager> <div> <input type="button" onclick="JsCallCSharp('hello')" /> </div> </form></body></html>
新聞熱點
疑難解答
圖片精選