必须在客户端或服务器端更改哪些内容才能使 getJSON() 工作?
Posted
技术标签:
【中文标题】必须在客户端或服务器端更改哪些内容才能使 getJSON() 工作?【英文标题】:What has to be changed client-side or server-side to make getJSON() work? 【发布时间】:2011-08-07 11:20:48 【问题描述】:我正在使用一些已经创建的 Web 服务,我需要使用 ajax 调用它们。我正在处理的站点托管在与 Web 服务不同的域中。我现在知道这会导致同源策略的问题。
我正在尝试使用 JSON 来解决它,基于文章:
JQuery API
IBM on cross-domain comms
这里还有很多其他问题。
我已经尝试了以下代码(将实际域替换为“webservice”):
<script type="text/javascript">
$(document).ready(function()
$.getJSON("http://webservice/restserver.aspx?",
method: "userInfo",
userID: "039304303930302",
sessionID: "STRING",
format: "json"
,
function(data)
alert("GET Returned");
);
);
</script>
1) 我是 JSON 和 AJAX 的新手,这有什么严重的问题吗
2) Web 服务是否需要回调,例如 - "&callback=?"添加到它
3) 有没有其他方法可以绕过跨域调用
任何建议或帮助都将受到欢迎,因为我已经为此工作了很长时间。
谢谢!
【问题讨论】:
【参考方案1】:您需要不同于 JSON 的 JSONP。您需要修改 Web 服务方法,以便它可以采用附加参数(例如 callback=foo
)并将 JSON 响应包装在此函数中:
foo( first_name: 'john', last_name: 'smith' )
为了实现跨域 AJAX 调用,jQuery 使用隐藏的 <script>
标记,因此必须将 Web 服务配置为接受 GET 请求。
$.getJSON()
方法文档包含一个使用 Flickr 的示例,您可以尝试运行该示例并使用 FireBug 查看确切的请求/响应。你可以see it in action here。
【讨论】:
谢谢我现在可以得到响应我在解析响应时遇到了一些麻烦,Web 服务是否必须使用 JSON 响应?是否有任何地方的示例?然后可以使用function(data) $.each(data.items, function(i,item) alert(item.name); );
或类似的东西来解析它以上是关于必须在客户端或服务器端更改哪些内容才能使 getJSON() 工作?的主要内容,如果未能解决你的问题,请参考以下文章