vs2008中js調用web服務實現下拉框多級聯動小記

1.添加web服務

  在web項目中‘添加新項’->‘添加web服務’(注意文件後綴名是.asmx,不是.ashx的一般處理文件),添加完成後就會在你剛纔所選的路徑下出現後綴名爲.asmx的web服務文件,而對應的類文件會被自動的放到App_code文件下,便於在整個項目中調用,類文件包括一個類及其helloworld的示例web服務方法,在類和方法上部以及自動加好了實現web服務的一些特性,其中類的前面有這樣一個特性[System.Web.Script.Services.ScriptService],默認是被註釋掉了,要取消註釋(便於使用 ASP.NET AJAX 從腳本中調用此 Web 服務),然後就可以在類裏面添加你需要的web服務方法,注意在方法前要加上[WebMethod]的特性。

2.客戶端設置

  在客戶端頁面上要加名稱爲ScriptManager的ajax控件(通常內嵌於body標籤裏面),可直接從工具欄的ajax extensions選項卡下拖拽,在內嵌腳本中引用剛纔建的web服務,如下所示

<Services>
<asp:ServiceReference Path="~/WebSve.asmx" />
</Services>

3.js中調用web服務

  關於js代碼的位置要注意,不能放在header標籤裏面(不能識別web服務的方法),其他位置均可,具體調用採用的形式爲:類名.方法名(參數1,參數2,回調函數)

  在回調函數中處理web服務的返回結果,web服務方法返回結果在js都能智能識別,比如說一個泛型列表在js中就變成了集合,泛型中的元素如果是類,則類的屬性可直接引用,有關其他返回類型在js中的識別,可在客戶端調試模式下(可直接加斷點或在js中加debugger語句,瀏覽器也要進行相應設置),添加‘監視’,在監視窗口中可以查看被監視變量的詳細屬性和方法。

4.頁面回發時如何保留客戶端控件回發前的狀態

  由於客戶端控件無法像服務器控件呢樣保存其視圖狀態,這一點對select控件尤其如此,我採用的解決辦法是:既然服務器控件可以保留視圖狀態,呢就用隱藏的服務器控件保留當前select控件的選擇值,在頁面回發後頁面加載事件(客戶端)中,將select控件的等於隱藏控件中保存的值的選項置爲選中,這樣就實現了客戶端控件視圖狀態的保留。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章