• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

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

    來源:懂視網 責編:小采 時間:2020-11-27 22:38:04
    文檔

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

    asp.net中javascript與后臺c#交互:最近做一個小項目,網頁中嵌入google maps,輸入經緯度坐標可以定位地圖位置并加注標記,點擊標記獲取遠端攝像頭數據并在視頻窗口實現播放。在實際操作過程中,由于經緯度數據和視頻登錄的用戶名密碼數據均要從后臺數據庫中提取,而第三版的google map
    推薦度:
    導讀asp.net中javascript與后臺c#交互:最近做一個小項目,網頁中嵌入google maps,輸入經緯度坐標可以定位地圖位置并加注標記,點擊標記獲取遠端攝像頭數據并在視頻窗口實現播放。在實際操作過程中,由于經緯度數據和視頻登錄的用戶名密碼數據均要從后臺數據庫中提取,而第三版的google map

    最近做一個小項目,網頁中嵌入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>
    

    后臺代碼(.cs文件)

    using System;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    using System.Web.Services;//添加web服務引用
    
    public partial class _Default : System.Web.UI.Page
    {
     protected void Page_Load(object sender, EventArgs e)
     {
     
    
     }
     [WebMethod]//標示為web服務方法屬性
     public static string sayhell(string say)//注意函數的修飾符,只能是靜態的
     {
     return say;
     }
    }
    
    

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

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

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

                  2.將該方法聲明public并將該方法標示為[webMethod]屬性方法  
                  3.在頁面中ScriptManager控件并添加web服務引用                

    <Services><asp:ServiceReferencePath="~/WebService.asmx" /></Services>  

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

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

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

    示例:

    頁面代碼

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
     <title>無標題頁</title>
    
     <script type="text/javascript">
     function JsCallCSharp(param1)
     { 
     PageMethods.sayhell(param1,onSayHelloSucceeded);
     } 
     function onSayHelloSucceeded(result)
     { 
     alert(result);
     } 
    
    //該方法為調用的函數
     function JsCallWebService()
     {
     WebService.HelloWorld("helloWord",function(res)//調用web服務
     {
     alert(res);
     });
     }
     </script>
    
    </head>
    <body>
     <form id="form1" runat="server">
     <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" >
     <Services><asp:ServiceReference Path="~/WebService.asmx" /></Services>//注意要引用web服務
     </asp:ScriptManager>
     <div>
     <input type="button" onclick="JsCallCSharp('hello')" value="測試C#后臺頁" />
     <input type="button" onclick="JsCallWebService()" value="測試web后臺類" />
     </div>
     </form>
    </body>
    </html>

    web服務后臺代碼

    using System;
    using System.Collections;
    using System.Linq;
    using System.Web;
    using System.Web.Services;
    using System.Web.Services.Protocols;
    using System.Xml.Linq;
    
    /// <summary>
    ///WebService 的摘要說明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    //若要允許使用 ASP.NET AJAX 從腳本中調用此 Web 服務,請取消對下行的注釋。 
     [System.Web.Script.Services.ScriptService]//注意要添加該標示
    public class WebService : System.Web.Services.WebService {
    
     public WebService () {
    
     //如果使用設計的組件,請取消注釋以下行 
     //InitializeComponent(); 
     }
    
     [WebMethod]//方法要標示的屬性
     public string HelloWorld(string result) {
     return result;
     }
     
    }
    

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

      <input id="xx" type="hidden" runat="server">
      b、然后在前臺javascript當中直接取隱藏文本域的值。
       document.getElementByIdx_x('xx').value

    方法二:
      a、在服務器端變量賦值后在頁面注冊腳本
      Page.RegisterStartScript(" ","<script language='javascript'>var vary=" + value + "</script>");
      value是后臺變量,然后javascript中可以直接訪問vary值,它的值就是后臺變量value的值,這種方式只不過是能過一種間接的方式來訪問c#變量。
    三、C#中訪問JavaScript的已有變量
    方法一:前臺使用服務器文本控件隱藏域,將js變量值寫入其中;后臺直接通過控件id訪問和調用,即后臺用Request["id"]來獲取值。

    方法二:可以用cookie或session存儲變量值,后臺直接使用
    使用session以下是代碼片段:

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

    四、C#代碼執行JavaScript函數和調用JavaScript函數
    方法一:C#中使用ScriptManager.RegisterStartupScript(this, this.GetType(), "edit", "CSharpCallJs('"+param1+"','"+param2+"')",

    示例:

    腳本函數

    function CSharpCallJs(param1,param2) 
     { 
     alert(param1 + param2); 
     } 
    
    

    頁面后臺代碼

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

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

     .aspx 
      function GetTitleID(obj) 
      { 
      sTitleID=obj 
      if(sTitleID!=null) 
      document.getElementByIdx_x("HiddenField1").value=type+','+sTitleID; 
      else 
      document.getElementByIdx_x("HiddenField1").value=type+',0'; 
      } 
      .cs 
      string hiddenValue = this.HiddenField1.Value;
    

    方法三:Page.RegisterStartupScript("function","<script>你要調用的javascript函數名稱;</script>");

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

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

    asp.net中javascript與后臺c#交互:最近做一個小項目,網頁中嵌入google maps,輸入經緯度坐標可以定位地圖位置并加注標記,點擊標記獲取遠端攝像頭數據并在視頻窗口實現播放。在實際操作過程中,由于經緯度數據和視頻登錄的用戶名密碼數據均要從后臺數據庫中提取,而第三版的google map
    推薦度:
    標簽: 后臺 net javascript
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 国产精品污WWW一区二区三区 | 2022国内精品免费福利视频| 国产精品亚洲高清一区二区| 国产精品天天看天天狠| 香蕉依依精品视频在线播放 | 久久精品国产精品国产精品污 | 狠狠色丁香婷婷综合精品视频| 在线观看国产精品普通话对白精品| 国产精品成人观看视频网站| 国产成人精品亚洲日本在线| 久久亚洲精品国产精品| 亚洲欧美日韩国产精品| 久久久久99精品成人片三人毛片| 99久久免费国产精品| www.99精品| 99久久久国产精品免费无卡顿| 日韩精品无码一本二本三本| 亚洲精品国产高清不卡在线| 久久99精品国产99久久6| 国产精品午夜无码AV天美传媒 | 无码精品A∨在线观看中文| 日韩亚洲精品福利| 欧美日韩精品一区二区三区不卡 | 国产剧情国产精品一区| 亚洲国产精品无码中文字| 亚洲国产精品激情在线观看 | 精品一区二区三区在线视频| 国产成人无码久久久精品一| 老司机67194精品线观看| 熟妇人妻VA精品中文字幕| 日韩精品人妻系列无码专区 | 精品国产一区二区三区久久久狼| 日韩精品极品视频在线观看免费| 无码人妻精品一区二区三区在线| 亚洲精品制服丝袜四区| 午夜天堂精品久久久久| 无码国产精品一区二区免费vr | 亚洲第一精品在线视频| 亚洲视频精品在线| 999久久久国产精品| 国产精品秘入口福利姬网站|