0

我正在尝试使用我新设置的 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 中获得所需的响应?

4

2 回答 2

1

几件事。其中一些已经被其他成员提及。

  1. 通过 XMLHttpRequest 进行的 AJAX 调用不能跨域工作。换句话说,您的 AJAX 代码无法从 jsfiddle.net 调用 196.34.92.60。它们是不同的域。
  2. 您的浏览器正在返回 XML,因为它正在发送“Accepts: text\html”作为标题。jQuery 将解决此问题,因为它在请求中使用了 application\json(除非您另外指定)。

所以问题 2 已经修复。问题 1 可以使用 JSONP 解决。你应该只需要添加 ?callback=? 到您的网址的末尾。但是,请阅读 jQuery 网站上的文档以获得完整的概述。

转到此 URL 并在页面上搜索“JSONP” http://api.jquery.com/jQuery.getJSON/

于 2012-09-20T10:18:36.607 回答
0

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

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

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

于 2012-09-20T13:19:12.673 回答