共用方式為


使用複雜類型範例的AJAX服務

ComplexTypeAjaxService 範例示範如何使用 Windows Communication Foundation (WCF) 建立 ASP.NET 異步 JavaScript 和 XML (AJAX) 服務,以建立複雜類型的實例,並在服務和客戶端之間以 JavaScript 物件表示法傳送它們。 您可以從網頁瀏覽器用戶端使用 JavaScript 程式代碼來存取 AJAX 服務。 此範例是以 基本 AJAX 服務 範例為基礎。

WCF 中的 AJAX 支援已優化,可透過 ScriptManager 控件與 ASP.NET AJAX 搭配使用。 如需使用 WCF 搭配 ASP.NET AJAX 的範例,請參閱 AJAX 範例集

備註

此範例的安裝程式和建置指示位於本主題結尾。

下列範例中的服務是沒有 AJAX 特定程式代碼的 WCF 服務。 WebGetAttribute因為屬性未套用,因此會使用預設 HTTP 動詞命令 (“POST”)。 服務有一個作業, DoMath它會傳回名為 MathResult的複雜型別。 複雜類型是標準數據合約類型,其中也不包含任何AJAX特定程序代碼。

[DataContract]
public class MathResult
{
    [DataMember]
    public double sum;
    [DataMember]
    public double difference;
    [DataMember]
    public double product;
    [DataMember]
    public double quotient;
}

使用 WebScriptServiceHostFactory在服務上建立 AJAX 端點,就像在基本 AJAX 服務範例中一樣。

用戶端網頁ComplexTypeClientPage.aspx包含 ASP.NET 和 JavaScript 程式代碼,當使用者按兩下頁面上的 [ 執行計算 ] 按鈕時叫用服務。 叫用服務的程式代碼會建構 JSON 主體,並使用 HTTP POST 傳送它,類似於 使用 HTTP POST 的 AJAX 服務 範例。

服務呼叫成功之後,您可以在產生的 JavaScript 物件上存取個別的數據成員 (sumdifferenceproductquotient) 。

function onSuccess(mathResult){
     document.getElementById("sum").value = mathResult.sum;
     document.getElementById("difference").value = mathResult.difference;
     document.getElementById("product").value = mathResult.product;
     document.getElementById("quotient").value = mathResult.quotient;
}

要設定、建置和執行範例,請執行以下步驟:

  1. 請確定您已針對 Windows Communication Foundation 範例 執行One-Time 安裝程式。

  2. 建置 Windows Communication Foundation 範例中所述,建置解決方案ComplexTypeAjaxService.sln。

  3. 流覽至 http://localhost/ServiceModelSamples/ComplexTypeClientPage.aspx (不要從項目目錄在瀏覽器中開啟ComplexTypeClientPage.aspx)。

另請參閱