0

私は非常に具体的な問題を抱えています...

私は2つのレールアプリを持っています:

  • アプリ 1 はアプリ 2 にリクエストを送信し、有効な JSONP レスポンスを取得します。
  • アプリ 2 には Rack JSONP ミドルウェアが装備されているため、正しいラップされたコールバック (つまりJQuery1919191([{[{"find_item":{"geo_lon":-74....etc)が返されます。

何らかの理由で、アプリ 1 は JavaScript コンソールで次のエラーをスローします。

JSONP Error: parsererror Error: jQueryXXXXXX was not called.

ただし、レール以外のコンテキストでこれをテストする場合は問題なく動作します。例については、私のフィドルを参照してください: http://jsfiddle.net/pBDyW/16/このコード (この例で動作) は、Rails アプリで使用しているコードとまったく同じです。

私が混乱しているのは、着信 JSONP resuqest を適切に処理するためにアプリ 1 (受信アプリ) を構成する方法です。Apache で提供される一般的なページからこれを呼び出すとうまくいくので、これは Rails の何かに違いないと確信しています。

助けてください!

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アプリのJSONP呼び出しは、次のような応答を実行した場合にのみ成功します。

success: callbackFunction

ではなく

success: function(){//do stuff}

ただし、後者の例はJSフィドルで機能します。変。Rails3+のフォーマットの不一致にすぎないと思います。

とにかく、これがそれに出くわす人に役立つことを願っています!

于 2012-07-27T12:34:35.877 に答える