【问题标题】:JQuery is not getting any response from my Sinatra using RackJQuery 没有从我的 Sinatra 使用 Rack 得到任何响应
【发布时间】:2014-02-19 19:18:20
【问题描述】:

我有点挣扎。

我的 Sinatra Web 服务器使用 Rack 作为中间件,因为我需要多个 Sinatra 的应用程序。

应用程序将是一个返回 json 响应的 REST API,所以在我的 Sinatra 应用程序中我有类似的东西:

get "/:product/items" do
  content_type :json
  ## This will get you a JSON response 
  get_items("product")
end

如果你在浏览器中访问 http://myapp/product/items/ 我会得到 json 响应

但是现在当我尝试从 JQuery 使用这个 api 时

jQuery.getJSON("//myapp/product/items", populate);

我在控制台日志中得到一个空响应

这些是标题:

Age 0
Cache-Control   public, max-age=1800
Connection  Keep-Alive
Content-Length  1443
Content-Type    application/json;charset=utf-8
Date    Wed, 19 Feb 2014 19:11:12 GMT
Server  WEBrick/1.3.1 (Ruby/2.0.0/2013-11-22)
X-Content-Digest    d55b64d8ec2c3e349fa799d3f15ae0f482850182
X-Content-Type-Options  nosniff
X-Rack-Cache    miss, store

Request Headers
Accept  application/json, text/javascript, */*; q=0.01
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Host    localhost:9292
Origin  http://localhost
Referer http://localhost/index.htmk
User-Agent  Mozilla/5.0 (X11; Linux x86_64; rv:26.0) Gecko/20100101 Firefox/26.0

如果您检查标头,您将看到带有 content-Type: json 和内容长度的良好响应,但在响应正文中没有任何内容。

如果我使用

Jquery.getJSON("//myapp/product_name/items?callback=?", populate)

工作......即使这样我也不想这样做,因为我想缓存响应一个小时,如果我使用回调=?我收到了一个 Jquery 响应,但我不希望这样,因为它会生成一个随机数来引用我将要使用的函数。

所以我不确定响应是否有什么问题,还是我遗漏了什么?

谢谢

【问题讨论】:

    标签: jquery ruby sinatra rack


    【解决方案1】:

    我发现问题看起来好像我缺少实际上有意义的 Access-Control-Allow-Origin 标头,但我忘记了。

    我不知道如果你没有意味着你不能做一个 X 域请求,所以我只是使用这个 gem sinatra/cross-origin ,这将是诀窍

    代码:

    require 'sinatra/cross_origin'
    
    set :allow_origin, :any
    
    configure do
      enable :cross_origin
    end
    

    【讨论】:

      【解决方案2】:

      您的请求似乎在您的问题(“产品”)中有错字 - 请检查您的应用中是否存在这种情况。

      还请查看您的 Sinatra 日志以查看路由是否被命中以及在您发出请求时是否找到任何项目

      【讨论】:

      • 嗨,如果您在 sinatra 应用程序中看到产品名称 /:product/items 并不重要,这意味着它正在搜索产品名称而不是“产品”跨度>
      猜你喜欢
      • 1970-01-01
      • 2023-01-19
      • 1970-01-01
      • 1970-01-01
      • 2018-06-18
      • 2014-01-30
      • 2013-05-13
      • 1970-01-01
      • 2018-01-21
      相关资源
      最近更新 更多