pex*_*pex 1 jquery json rack cross-domain sinatra
我在Sinatra上运行REST-API构建.现在我想编写一个从API中获取数据的jQuery脚本.
Sinatra被告知要回应JSON
before do
content_type :json
end
Run Code Online (Sandbox Code Playgroud)
简单的路线看起来像
get '/posts' do
Post.find.to_json
end
Run Code Online (Sandbox Code Playgroud)
我的jQuery脚本是一个简单的ajax调用
$.ajax({
type: 'get',
url: 'http://api.com/posts',
dataType: 'json',
success: function(data) {
// do something
}
})
Run Code Online (Sandbox Code Playgroud)
实际上只要两者都在相同的IP,API和请求JS上运行,一切正常.不过,我已经尝试过使用JSONP for Rack而没有任何积极的结果.可能我只需要提示如何继续.
使用JSONP(带填充的JSON).Rack 有一个JSONP扩展.
基本上,你会打电话:
$.ajax({
type: 'get',
url: 'http://api.com/posts',
dataType: 'jsonp',
success: function(data) {
// do something
}
})
Run Code Online (Sandbox Code Playgroud)
转换为如下请求:
http://api.com/posts?callback=someJSFunc
Run Code Online (Sandbox Code Playgroud)
并且您的服务器将响应,例如:
someJSFunc({"json":"obj"});
Run Code Online (Sandbox Code Playgroud)
当然,客户端可以在没有jQuery的情况下执行JSONP请求.使用JSONP的技巧是你提供脚本,它可以是跨域的,而不是纯JSON,而不是.
| 归档时间: |
|
| 查看次数: |
4714 次 |
| 最近记录: |