JQuery 利用 Ajax 呼叫Web Service

在撰寫Project 我們有時會需要編寫在生產線現場使用的程式 , 考慮到現場的效率因此我們無法使用ASP.NET 撰寫

因為ASP.NET 的程式碼是在Server處理的 , Client傳處理需求到Server 處理完成送回Client 花費的時間會太長而不適用

因此現場的程式大都已Javascript 作撰寫 , 但是問題來了 Javascript 的撰寫以及除錯

ASP.NET 比起來又難上很多….為了兩全其美

 

我建議各位面對這個問題以JQuery 呼叫 Web Server 的方式處理邏輯

就可以兼顧雙方的優點並滿足使用者的需求

jQuery 官方網站

http://jquery.com.tw/

在這裡可以下載到需要使用的檔案以及教學手冊

有興趣的人可以逛逛看~~~~~~

 

使用方式

在實地介紹時請先按照下列步驟進行前置作業

l   請先建立一個最基本的網站配置

l   請將jQuery物件檔案放到Scripts下面 (jquery-1.4.1.js , jquery.json-1.3.js)

 

建立測試WebService 檔案TestWebService.asmx

TestWebService.asmx內容

<%@ WebService Language="VB" Class="TestWebService" %>

Imports System

Imports System.Linq

Imports System.Web

Imports System.Web.Services

Imports System.Web.Services.Protocols

Imports System.Web.Script.Services

Imports System.Threading

 

<WebService(Namespace:="http://tempuri.org/")> _

<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _

<ScriptService()> _

Public Class TestWebService

    Inherits System.Web.Services.WebService

       

    <WebMethod()> _

    Public Function ExcuteWebService(ByVal Data As String,ByValallowCheck As BooleanAs String       

        Dim result As String

        If allowCheck = True Then

            result = "Hello " + Data + " You are my firend"

        Else           

            result = "Hello " + Data + " You are not my firend"

        End If

       

        Return result

    End Function

End Class

 

測試主頁Default.aspx

<%@ Page Title="Home Page" Language="VB"MasterPageFile="~/Site.Master" AutoEventWireup="false"

    CodeFile="Default.aspx.vb" Inherits="_Default" %>

 

 

<asp:Content ID="HeaderContent" runat="server"ContentPlaceHolderID="HeadContent">

    <style type="text/css">

        #Button1

        {

            width147px;

        }

    </style>

    <script src="<%=Me.ResolveUrl("~/Scripts/jquery-1.4.1.js")%>"type="text/javascript"></script>   

    <script src="<%=Me.ResolveUrl("~/Scripts/jquery.json-1.3.js")%>"type="text/javascript"></script>

 

    <script type="text/javascript">

         function YesRadio_Click() {            

             var noradioObject = document.getElementById("NoRadio");

             noradioObject.checked = false;

         }

 

         function NoRadio_Click() {

             var yesradioObject = document.getElementById("YesRadio");

             yesradioObject.checked = false;

         }

 

         function StartButton_Click() {

             var yesradioObject = document.getElementById("YesRadio");

             var noradioObject = document.getElementById("NoRadio");

             var nametextObject = document.getElementById("NameText");

             var check;

             if (noradioObject.checked == true) {

                 check = false;

             }

             if (yesradioObject.checked == true) {

                 check = true;

             }

 

             var data = { "Data": nametextObject.value, "allowCheck": check};

             var jsonData = $.toJSON(data);

             $.ajax({

                 type: 'post',

                 url: "Service/TestWebService.asmx/ExcuteWebService",

                 contentType: "application/json;utf-8",

                 data: jsonData,

                 dataType: "json",

                 async: false,

                 success: function (result) {

                    alert(result.d);                                         

                 },

                 error: function (result) {

                     var error = $.evalJSON(result.responseText);                    

                     alert(error.Message);

                 }

             });

 

 

         }

    </script>

 

</asp:Content>

<asp:Content ID="BodyContent" runat="server"ContentPlaceHolderID="MainContent">

    <h2>

        Welcome to ASP.NET!

    </h2>

    <p>

        Please Enter your name&nbsp; <input id="NameText" type="text"/></p>

    <p>

        Do you like write program&nbsp;&nbsp;&nbsp; Yes<inputid="YesRadio"

            type="radio" value ="Yes" onclick="YesRadio_Click();"checked="checked" />&nbsp;&nbsp;

        No<input id="NoRadio" type="radio" value = "No"onclick="NoRadio_Click();"  /></p>

   <p>

       <input id="StartButton" type="button" value="Call Web Service"onclick="StartButton_Click();"  /></p>

</asp:Content>

 

測試結果

 

程式細部說明

以下將針對最重要的Call Web Service 的部分做說明其他部分就不講了

 

        //建立傳入參數

        var data = { "Data": nametextObject.value, "allowCheck": check};

        var jsonData = $.toJSON(data);

 

        //實地執行Call WebServer

        $.ajax({

              type: 'post',

              url: "Service/TestWebService.asmx/ExcuteWebService",

              contentType: "application/json;utf-8",

              data: jsonData,

              dataType: "json",

              async: false,

                          // success:Web Service 成功時所要做的後續處理

              success: function (result) {

                  alert(result.d);                                         

              },

                          // error:Web Service 失敗時所要做的後續處理

              error: function (result) {

                  var error = $.evalJSON(result.responseText);                    

                  alert(error.Message);

              }

     });

 

基本上Java 使用jquery 使用Web Service 就是這麼簡單

這樣就可以兼顧效率以及使用除錯方便這兩個要點摟~~~~~

 

以上教學歡迎轉載但是請註明源頭來自

胖雀鳥的妄想天地http://tw.myblog.yahoo.com/big-suzume

 

來源:

http://blog.xuite.net/stua810654/twblog/111666916-JQuery+%E5%88%A9%E7%94%A8+Ajax+%E5%91%BC%E5%8F%ABWeb+Service

arrow
arrow
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()