2009-05-09 5 views
0

拡張子が「.js」のURLに$ .ajax()リクエストを発行できます私は{... 'dataType': 'スクリプト' ...}を使用します。しかし、私が{... 'dataType': 'json' ...}を使用すると、ブラウザ(OperaとFF、これまでは、普遍的だと思います)はリクエストの結果を保存/開くように求めます。

私の「成功」コールバックはうまく動作し、結果として得られるjsonオブジェクトをうまく使っています。

私の質問は、リソースから* .js拡張子を削除して 'json = true'オプションを渡すだけですか?または、ブラウザが結果をレンダリング/保存/開くことを試みるのを止める便利な方法はありますか? (便利なことは、もちろん、すべてのユーザーがブラウザに設定しなければならないものではありません。)

また、私はRailsを使用しているので、ヘッダオーダールーティングの問題により、この。

答えて

4

私はここで間違っているかもしれませんが、あなたのイベントハンドラからfalseを返すのを忘れたと思います。したがって、リクエストはデフォルトのハンドラに伝播されています。または、スクリプトが失敗する原因となったバグをnickfが指摘したように。試しにコードをラップし、エラーが発生したかどうかを確認してください。

try { 
    // your code 
} catch(e) { 
    alert(e); 
} 
+0

が合意しました..あなたのJavaScriptコードが終了するのを止めているバグがあるかもしれないので、JSファイルのプレーンなhttpリクエストを送信するだけです。 – nickf

+0

ダイスはありません。コールバックが実行されていて、意図されたすべてのアクションがレンダリングされていたため、例外はないと思われました。私はコールバックの本体と.jsファイルの本体をtryブロックでラップし、あなたが示唆したようにcatchブロックの後ろに警告を出しました(これらのビットが実行されていることを保証するために - あなたのRailsルートを時々ナビゲートするのに苦労してください!) すべてのコードがうまく実行され、すべてのアラートが表示されました。最後のアラートがreturnステートメントの前の行にあるからです。 まあ。 – Mike

0

JSONファイルの「正しい」ファイル拡張子は.jsonで、.jsではありません。あなたはそれを試しましたか?

+0

これが原因である可能性があります。問題のアクションは投稿ですが、Railsはjsonオブジェクトの投稿を許可しないようです。結果をjsonとして戻して投稿することを望んでいました。代わりに、私はテキストとしてそれらを取得し、クライアント側で処理を行うと思います。 – Mike

1

これは暴動です。明らかに、は、 'return false;'というステートメントをコメントアウトしないことが重要です。あなたのイベントハンドラーの終わりに。

ハンドラの終わり近くにある他のコードをコメントアウトしている間に、間違ってこれを実行しているに違いありません。

今後さらに1337 h4x0rのアドバイスをお待ちしています。

関連する問題