2012-07-27 50 views
0

我有一個非常具體的問題Rails的JSONP解析錯誤......在接收端

我有2個Rails應用:

  • 應用程序1發出請求到App 2,並得到有效的JSONP響應。
  • 應用2已經配備機架JSONP中間件所以它與 返回正確包裹回調(即JQuery1919191([{[{"find_item":{"geo_lon":-74 ....等)

出於某種原因,應用1拋出以JavaScript控制檯以下錯誤:

JSONP Error: parsererror Error: jQueryXXXXXX was not called

但是,當它在非rails環境中測試時,它工作正常。以下是我的小提琴示例:http://jsfiddle.net/pBDyW/16/此代碼(在此示例中適用)與我在rails應用中使用的代碼完全相同。

我很困惑的是如何配置應用程序1(接收應用程序)來正確處理傳入的JSONP結果。我確信它必須是Rails的東西,因爲在Apache中提供的通用頁面調用這個頁面,效果很好。

請幫助!

回答

0

事實證明,無論出於何種原因,Rails應用程序(應用程序1)似乎處理傳入請求的方式都有微妙之處。我修改我的方法,這是呈現在我的控制器與JSON響應:

respond_to :json

def json_result

@blah = [stuff from database]

respond_with @blah

end

方法(與推薦Rack JS ON Middlware的做法,並恢復我的JSON響應:

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

這裏的區別是一個奇怪的一個。

success: callbackFunction

和NOT

success: function(){//do stuff}

然而,後者的例子在JS小提琴作品:如果我執行這樣的響應軌道應用 JSONP調用纔會成功。奇怪的。我想這只是Rails 3+中的一些格式差異。

無論如何,希望這有助於任何人遇到它!