使用复杂类型示例的 AJAX 服务

ComplexTypeAjaxService 示例演示如何使用 Windows Communication Foundation (WCF) 创建 ASP.NET 异步 JavaScript 和 XML (AJAX) 服务,该服务创建复杂类型的实例,并将其作为 JavaScript 对象表示法(JSON)在服务和客户端之间发送。 可以从 Web 浏览器客户端使用 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. 生成解决方案ComplexTypeAjaxService.sln,如 生成 Windows Communication Foundation 示例中所述。

  3. 导航到 http://localhost/ServiceModelSamples/ComplexTypeClientPage.aspx(不要在浏览器中从项目目录打开 ComplexTypeClientPage.aspx)。

另请参阅