在javascript中使用RESTful服务

时间:2012-09-20 09:04:52

标签: json wcf rest jsonp

我正在尝试使用位于

的新设置的RESTful WCF服务

[http://196.34.92.60/api/api/v1/public.svc/getoperators]

我使用了一些第三方工具来访问它,我从

中获取了这些工具

http://code.google.com/a/eclipselabs.org/p/restclient-tool/

https://addons.mozilla.org/en-US/firefox/addon/restclient/

我的结果看起来像我预期的那样:

{
   "Results":
   [
       "golden arrow",
       "jammie",
       "myciti"
   ]
}

一切都很好。当我在网页浏览器中输入网址时,响应为

<ResultList xmlns="http://schemas.datacontract.org/2004/07/Developer_Portal"xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><Results xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays"><a:string>golden arrow</a:string><a:string>jammie</a:string><a:string>myciti</a:string></Results></ResultList>

不是我的预期,但我认为这是正常的,并尝试在Javascript(这里是小提琴)中提供服务

http://jsfiddle.net/JmTe4/11/

它以错误响应。在这一点上,我很难过:我需要做些什么来在javascript中获得所需的响应?

2 个答案:

答案 0 :(得分:1)

一些事情。其他成员已经提到了其中一些。

  1. 通过XMLHttpRequest调用AJAX不会跨域工作。换句话说,您的AJAX代码无法从jsfiddle.net调用196.34.92.60。它们是不同的领域。
  2. 您的浏览器正在返回XML,因为它正在发送&#34;接受:text \ html&#34;作为标题。 jQuery将解决此问题,因为它在请求中使用application \ _json(除非您另行指定)。
  3. 所以问题2已经修复。可以使用JSONP解决问题1。你应该只需要添加?callback =?到你的网址的末尾。但是,请阅读jQuery网站上的文档以获取完整概述。

    转到此URL并在页面中搜索&#34; JSONP&#34; http://api.jquery.com/jQuery.getJSON/

答案 1 :(得分:0)

问题出在服务器webconfig中。我不得不添加

<binding name="webHttpBindingWithJsonP" crossDomainScriptAccessEnabled="true" />

感谢您的建议,他们可能解决了我会遇到的其他一些问题。 :)