0

我有一个非常具体的问题...

我有 2 个 Rails 应用程序:

  • 应用 1 向应用 2 发出请求并获得有效的 JSONP 响应。
  • App 2 配备了 Rack JSONP 中间件,因此它返回正确的包装回调(即JQuery1919191([{[{"find_item":{"geo_lon":-74....etc)

出于某种原因,App 1 在 javascript 控制台中引发以下错误:

JSONP Error: parsererror Error: jQueryXXXXXX was not called.

但是,在非 Rails 上下文中测试它时,它工作正常。请参阅我的小提琴示例: http: //jsfiddle.net/pBDyW/16/此代码(在此示例中有效)与我在 Rails 应用程序中使用的代码完全相同。

我感到困惑的是我应该如何配置 App 1(接收应用程序)以正确处理传入的 JSONP 请求。我确信它一定是 Rails 的东西,因为从一个通用页面调用它,在 Apache 中提供服务,工作正常。

请帮忙!

4

1 回答 1

0

事实证明,rails 应用程序(应用程序 1)处理传入请求的方式似乎存在(无论出于何种原因)微妙之处。我修改了我的方法,即在我的控制器中呈现 JSON 响应:

respond_to :json

def json_result

@blah = [stuff from database]

respond_with @blah

end

方法(推荐使用 Rack JSON Middlware 方法,并将我的 JSON 响应恢复到:

render :json => @find_results, :callback => params[:callback]

这里的区别很奇怪。只有当我执行如下响应时,rails app JSONP 调用才会成功:

success: callbackFunction

并不是

success: function(){//do stuff}

但是,后一个示例适用于 JS 小提琴。诡异的。我想这只是 Rails 3+ 中的某种格式差异。

无论如何,希望这对遇到它的人有所帮助!

于 2012-07-27T12:34:35.877 回答