1. 程式人生 > >JavaScript訪問後臺方法的幾種實現方法

JavaScript訪問後臺方法的幾種實現方法

最近的專案中需要在客戶端使用JavaScript訪問後臺的方法,嘗試了以下幾種方法:

1.在<%%>中直接書寫程式碼段

2.通過js直接執行button的click()方法 觸發後臺程式碼

3.Ajax

4.將該方法釋出為webservice 通過javascript直接呼叫webservice.

專案中需要一次性迴圈生成多張密碼卡,而且麻煩的地方在於,前臺後臺需要共享相當多的屬性,通過hiddenField來傳遞。而每張密碼卡都需要首先呼叫後臺getTopMatrix()方法返回一個字串,客戶端獲得字串後做處理並存儲至EXCEL,若此過程成功則呼叫另一個後臺方法preToFormal()更新資料庫。初步嘗試的時候使用了方法一,方法一的缺點比較明顯,當頁面載入的時候<%%>中的內容被自動解析,無法實現可控的呼叫。

  1. <script>
  2. /*直接獲取返回值*/
  3. var str_matrix="<%=getTopMatrix()%>";
  4. </script>

方法二解決了可控性的問題。實現步驟如下:

    1、首先建立一個按鈕,在後臺將呼叫或處理的內容寫入button_click中;
    2、在前臺寫一個js函式,內容為document.getElementById("btn1").click();
    3、在前臺或後臺呼叫js函式,激發click事件,等於訪問後臺c#函式;

具體實現程式碼略。

當通過click事件觸發後臺方法後,後臺方法裡面對一個HiddenField賦值.而此時前臺的js程式碼仍在執行,需要用到這個HiddenField處理後的值。結果往往是後臺沒有為HiddenField賦值前臺js程式碼已經取到這個HiddenField的值,這時候仍然是空值。而通過加計時器的方法又顯得相當笨拙,且效率很低。

這個需求最終通過方法三Ajax解決,解決步驟:

    1、首先發起一個Ajax請求,訪問後臺頁面中的getTopMatrix()方法獲取密碼字串,為避免方法二中的問題,採用Ajax的同步方式。

    2、請求響應完畢之後,獲取返回的密碼字串通過Javascript處理並存儲至Excel。

    3、步驟2成功之後則發起另一個ajax請求,更新資料庫相關欄位。

==To be continue==

相關推薦

JavaScript訪問後臺方法實現方法

最近的專案中需要在客戶端使用JavaScript訪問後臺的方法,嘗試了以下幾種方法: 1.在<%%>中直接書寫程式碼段 2.通過js直接執行button的click()方法 觸發後臺程式碼 3.Ajax 4.將該方法釋出為webservice 通過javascr

前臺訪問後臺方法

1、WebMethod public static方法,ajax/PageMethods呼叫。 後臺方法,test.cs [WebMethod] public static string GetUserName() { //...... } 需要訪問操作sessi

多線程有實現方法?同步有實現方法?(被問到)

所有 正在 () read 異常 同步 -h 競爭 sync 多線程有兩種實現方法,分別是繼承Thread類與實現Runnable接口 同步的實現方面有兩種,分別是synchronized,wait與notify wait():使一個線程處於等待狀態,並且釋放所持有的對象的

關於python單例的常用實現方法

let 多個 ember 裝飾 但是 odi code cls 就會 這兩天在看自己之前寫的代碼,所以正好把用過的東西整理一下,單例模式,在日常的代碼工作中也是經常被用到, 所以這裏把之前用過的不同方式實現的單例方式整理一下 裝飾器的方式 這種方式也是工作中經常

javaScript中陣列的常用方法

1.splice(2,3,4)刪除陣列中任意項(三個引數). 2.splice(1,3)刪除從第一項開始的往後三項(兩個引數).(splice可以結合pop(),unshift(),push(),shift()來理解) 3.push()在陣列的末尾增加一項. 4.unshift()在陣列

Android MaterialDesign之水波點選效果的實現方法

什麼是水波點選的效果? 下面是幾種不同的實現方法的效果圖以及實現方法   Video_2016-08-31_003846 如何實現? 方法一 使用

淺談深拷貝和淺拷貝及實現方法

rgb bsp for ace onos 都是 UNC get con 討論深拷貝與淺拷貝之前,要先回顧一下值傳遞與引用傳遞: 值傳遞: var a = 10; var b = a; b++; //console.log(a,b)//a:10 b:11 引用傳遞: v

圓角ImageView的實現方法

①自定義View import android.content.Context; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.grap

C語言中求字串長度的函式my_strlen()的實現方法

C語言中求字串長度的函式的幾種實現方法 1.最常用的方法是建立一個計數器,判斷是否遇到‘\0’,不是’\0’指標就往後加一。 int my_strlen(const char *str) { assert(str != NULL);//此句判段str是否為空指標(事實上這條語

java.util.Timer、Quartz與Spring task定時器任務的實現方法

轉載:https://www.jb51.net/article/106445.htm 一.分類 從實現的技術上來分類,目前主要有三種技術(或者說有三種產品): 1.Java自帶的java.util.Timer類,這個類允許你排程一個java.util.TimerTask任務。使用這種方式

回到頂部的實現方法

  【1】使用預設連結錨點 新增一個a連結,設定a連結的href屬性值為"#top"即可實現 <body> <div>我在頂部</div> <!-- 很多內容 --> <br><br&g

JAVA之多執行緒概念及其實現方法優劣分析

1. 多執行緒 程式:指令集,靜態的概念 程序:作業系統調動程式,是程式的一次動態執行過程,動態的概念 執行緒:在程序內的多條執行路徑 Ps:單核的話程序都是虛擬模擬出來的,多核處理器才可以執行真正的多執行緒 單核通過CPU排程時間片實現虛擬模擬的多執行緒,比如執行main函式和GC在底層就是多執行

Java將資料資訊寫入檔案檔案的實現方法

Java將資料資訊寫入文字檔案的幾種實現方法 一,FileWritter寫入檔案 FileWritter, 字元流寫入字元到檔案。預設情況下,它會使用新的內容取代所有現有的內容,然而,當指定一個true (布林)值作為FileWritter建構函式的第二個引數,它會保留現有的內容,並追加新內

分散式鎖的實現方法:redis實現分散式鎖

使用失效的方式實現分散式鎖(推薦) import redis.clients.jedis.Jedis; /** * 使用redis實現分散式鎖(推薦) * */ public class JedLock { private static final String LOCK_KEY =

java多執行緒的實現方法

          方法一:繼承Thread類,覆蓋方法run(), public class MyThread extends Thread { int count= 1, number; public MyThread(int num) { number = num;

多執行緒有實現方法?同步有實現方法?

為何要使用同步? java允許多執行緒併發控制,當多個執行緒同時操作一個可共享的資源變數時(如資料的增刪改查),  將會導致資料不準確,相互之間產生衝突,因此加入同步鎖以避免在該執行緒沒有完成操作之前,被其他執行緒的呼叫,  從而保證了該變數的唯一性和準確性。 同步的

C++返回字串函式的實現方法

C++返回字串函式有四種方式: 1。使用堆空間,返回申請的堆地址,注意釋放 2。函式引數傳遞指標,返回該指標 3。返回函式內定義的靜態變數(共享) 4。返回全域性變數 1.使用堆空間,返

多執行緒同步和互斥有哪實現方法

執行緒間的同步方法大體可分為兩類:使用者模式和核心模式。顧名思義,核心模式就是指利用系統核心物件的單一性來進行同步,使用時需要切換核心態與使用者態,而使用者模式就是不需要切換到核心態,只在使用者態完成操作。使用者模式下的方法有:原子操作(例如一個單一的全域性變數),臨界區。核

JS陣列去重的實現方法

//使用indexOf function unique1(arr) { var result=[]; for(var i=0;i<arr.length;i++){ if(result.indexOf(arr[i])==-1){ result.push(ar

【Unity Shader】手遊中高光效果的實現方法

前言         由於手機裝置的效能限制,很多效果的計算都得精簡和優化才能達到目地。而在Unity中的高光效果,也給予了多種不同的方案,有用於主機的,用於手機的,有限制一盞畫素燈的,開發者可以根據