0

JSONP 応答のローカル バージョンをファイルとして保存しているので、インターネットに接続していないときに、ローカル ファイル システムから単一ページの Web アプリをテストできます。

タグから直接ロードするとうまくいきますが、jQuery関数<script>でロードしようとするとうまくいきません。$.ajax()(はい、ローカル ファイル システムからも jQuery を正常にロードしました。)

jQueryは常にパラメーターを URL に追加する可能性があると思いますがcallback、JSONP がインターネットではなく静的に名前が付けられたファイルから来ている場合、これは意味がありません。

jsonpCallbackset をnull空文字列または空文字列に渡そうとしまし''たが、違いはありません。

他にも奇妙な点があります:

  • URL としてフル パスを渡すと jQuery から正常に動作しますが、相対 URL を使用すると失敗しますが、<script>タグを直接使用するとどちらも同じように機能します。
  • 失敗すると、Google Chrome の開発者ツールのネットワーク タブに、メソッドが!OPTIONSではなくGET! 絶対 URL を使用する<script>か、相対 URL または絶対 URL でタグ メソッドを使用すると、メソッドがGET期待どおりであることがわかります。

これは既知の正しい動作ですか? 既知の不正な動作?

jQuery や Google Chrome でおかしなことはありますか? (私は Windows 7 32 ビット、Chrome バージョン 21 で実行しています。)

4

1 に答える 1

0

これは私の問題のすべてを解決するわけではないかもしれませんが、質問のタイトルで提起された特定の問題に答えます。

これは私が欠けていたもののようです:

「コールバック」パラメータを追加しないjQueryを使用したJSONPリクエスト?

jQuery.ajax()settingsオブジェクトパラメータを取ります。これらの設定の1つはと呼ばれjsonpます。ドキュメントから

jQuery 1.5以降、 jQueryが「?callback」文字列をURLに追加したり、「=?」を使用したりしないようにjsonpオプションを設定します。false変革のために。この場合、明示的に設定する必要もありjsonpCallbackます。例えば、{ jsonp: false, jsonpCallback: "callbackName" }

私のコードは現在、Windows 7(32ビット)でChrome(21)、Firefox(13)、Internet Explorer(9)、Opera(12)、Safari(5)の現在のバージョンで動作しています。

于 2012-08-11T07:41:35.153 に答える