Share via


使用 HTTP POST 的 AJAX 服務

PostAjaxService 範例會示範如何使用 Windows Communication Foundation (WCF) 來建立可使用 HTTP POST 的 ASP.NET 非同步 JavaScript 和 XML (AJAX) 服務。 AJAX 是可從 Web 瀏覽器用戶端使用基本 JavaScript 程式碼存取的一種服務。 這個範例的建置基礎是基本 AJAX 服務範例;這兩個範例之間的唯一不同在於使用 HTTP POST 而不是 HTTP GET。

Windows Communication Foundation (WCF) 中的 AJAX 支援已針對透過 ScriptManager 控制項來搭配 ASP.NET AJAX 使用完成最佳化。 如需搭配 ASP.NET AJAX 使用 WCF 的範例,請參閱 AJAX 範例

注意

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

下列範例中的服務是沒有使用 AJAX 特定程式碼的 WCF 服務。

如果作業是套用 WebInvokeAttribute 屬性,或是未套用 WebGetAttribute 屬性,則會使用預設 HTTP 動詞 ("POST")。 POST 要求比 GET 要求更難建構,不過 POST 要求不會被快取。請在不適合快取的所有作業上使用 POST 要求。

[ServiceContract(Namespace = "PostAjaxService")]
public interface ICalculator
{
    [WebInvoke]
    double Add(double n1, double n2);
    //Other operations omitted…
}

您可以在服務上使用 WebScriptServiceHostFactory 來建立 AJAX 端點,如基本 AJAX 服務範例所示。

不同於 GET 要求,您無法從瀏覽器叫用 POST 服務。 例如,瀏覽至 http://localhost/ServiceModelSamples/service.svc/Add?n1=100&n2=200 會發生錯誤,因為 POST 服務預期 n1n2 參數是以訊息本文方式傳送,也就是使用 JSON 格式,而不是使用 URL。

用戶端網頁 PostAjaxClientPage.aspx 包含 ASP.NET 程式碼,此程式碼會在使用者每次按下網頁上其中一個作業按鈕時叫用此服務。 服務的回應方式會與基本 AJAX 服務範例中相同,都是使用 GET 要求。

若要安裝、建置及執行範例

  1. 請確認您會執行<Windows Communication Foundation 範例的單次安裝程序>中的安裝指示。

  2. 依照建置 Windows Communication Foundation 範例中所述,建置方案 PostAjaxService.sln。

  3. 瀏覽至 http://localhost/ServiceModelSamples/PostAjaxClientPage.aspx(請勿使用瀏覽器從專案目錄開啟 PostAjaxClientPage.aspx)。