# ezj.ajax.service

### Web Service 代码

<%@ WebService Language="C#" Class="WebService" %> using System; using System.Web; using System.Web.Services; using System.Web.Services.Protocols; [WebService(Namespace = "http://www.getezj.com/demo/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class WebService : System.Web.Services.WebService { [WebMethod] public string SayString(string name) { return "您好，" + name + "。"; } [WebMethod] public string SayStringXml() { return @"<root> <item>1</item> <item>2</item> </root>"; } [WebMethod] public int SayInt() { return 135; } [WebMethod] public int[] SayIntArray() { return new int[]{1, 3, 5}; } }

### HTML 代码

<input type="button" id="ajax1" value="Web Service 演示一" /> <input type="button" id="ajax2" value="Web Service 演示二" /> <input type="button" id="ajax3" value="Web Service 演示三" /> <input type="button" id="ajax4" value="Web Service 演示四" />

### JavaScript 代码（ezj 代码）

ezj.ready(function(){ ajax1.click(function(){ ezj.ajax.service("inc/service.htm.asmx", "http://www.getezj.com/demo/", "SayString", { name : "ezj" }, function(data){ alert("这里演示向 Web Service 传送一个参数，并获取返回的字符串。", "返回值：" + data); }, function(data, status){ alert("发生了错误噢，HTTP 状态码：" + status); }) }); ajax2.click(function(){ ezj.ajax.service("inc/service.htm.asmx", "http://www.getezj.com/demo/", "SayStringXml", null, function(data){ alert("这里演示返回字符串，但这个字符串符合 XML。", "返回值：" + data, "用 $x 取 XML 的 item 值：" + $x(data).val("//item")); }, function(data, status){ alert("发生了错误噢，HTTP 状态码：" + status); }) }); ajax3.click(function(){ ezj.ajax.service("inc/service.htm.asmx", "http://www.getezj.com/demo/", "SayInt", null, function(data){ alert("这里演示返回 int，这个 int 实际上是字符串格式的，我们需要用 Number.from 来转换。", "返回值：" + Number.from(data)); }, function(data, status){ alert("发生了错误噢，HTTP 状态码：" + status); }) }); ajax4.click(function(){ ezj.ajax.service("inc/service.htm.asmx", "http://www.getezj.com/demo/", "SayIntArray", null, function(data){ alert("这里演示返回数组，实际上是个 XML 的 NodeList，需要自行取值。", "数组第二项的值：" + data[1].firstChild.nodeValue); }, function(data, status){ alert("发生了错误噢，HTTP 状态码：" + status); }) }); });

### 演示

### 问答

- 问：ezj.ajax.service 是通过什么协议工作的？

  答：SOAP 1.1。

- 问：ezj.ajax.service 可以访问第三方 Web Service 文件吗？

  答：ezj.ajax.service 运行于客户端，客户端浏览器基于安全的原因，不允许访问非本域的资源，所以想要在网站 A 通过 ezj.ajax.service 访问网站 B 的 Web Service 是不会有权限的，这跟 Ajax 一样。