【发布时间】:2012-05-24 07:48:21
【问题描述】:
我正在用 ruby on rails 实现一个服务器。现在我想使用 ajax 请求从这个服务器中获取一些数据(客户端在另一个域上,所以它是一个跨域调用)并以 JSON 形式接收数据。
我必须做些什么才能让它工作?
谢谢
【问题讨论】:
标签: ruby-on-rails ajax json cross-domain
我正在用 ruby on rails 实现一个服务器。现在我想使用 ajax 请求从这个服务器中获取一些数据(客户端在另一个域上,所以它是一个跨域调用)并以 JSON 形式接收数据。
我必须做些什么才能让它工作?
谢谢
【问题讨论】:
标签: ruby-on-rails ajax json cross-domain
在客户端使用 jquery 发送 ajax 请求:
像这样形成你的参数:
var data = {
remote: true,
myplace:
{
swlat:lat(),
swlng:lng(),
nelat:lat(),
nelng:lng(),
}
};
$.getJSON('/location/getNewLocation',data, function(postsData) {
parseReturnedJsonData(postsData);
});
这将向 json 数据的 URL 发送 POST 请求。然后在服务器上,您可以读取参数,然后在 parseReturnedJsonData() 函数中使用 jQuery 渲染 json。检查 jQuery 中的 getJson 和 parseJson 函数:http://api.jquery.com/jQuery.getJSON/
【讨论】:
查看jsonp 以了解rails,但请确保您了解jsonp 的工作原理
【讨论】:
您需要将callback 作为查询参数传递:
$.getJSON('http://some-service.com/some-resource?callback=?',data, function(postsData) {
parseReturnedJsonData(postsData);
});
另外,请确保您查询的 API 支持 JSONP。查看http://eduvoyage.com/jsonp-explained.html 以更好地了解 JSONP 的工作原理。
【讨论】: