私は気が狂っている問題を抱えています.
プロトタイプの代わりにRailsアプリでjQueryを使用しており、ajaxFormプラグインを使用してajax経由でフォームデータを送信しています。フォーム データが正常に送信され、対応するコントローラー アクションが正常に呼び出され、js タイプの適切な Respond_to ブロックが正常に呼び出されます。
*.js.erb ファイルのコンテンツがクライアント ブラウザに返され、javascript として解釈されないという事実で問題が発生します。実際には何も起こりません。はい、dataType: 'script' を設定しましたが、まだ機能しません。また、ajaxForm プラグインを使用せず、フォーム送信時に $.post 関数を手動で使用しようとしましたが、それでも同じ結果になりました。
いくつかのコード サンプルについては、ここに私の ajaxForm 呼び出しを示します。
$("#purchase-item-form").ajaxForm({
dataType: 'script'
});
また、accepts ヘッダーを適切に設定しています。私の format.js ブロックが実行されているため、これは正常に機能しています。
jQuery.ajaxSetup({
'beforeSend': function(xhr) { xhr.setRequestHeader("Accept", "text/javascript") }
});
私のアクション *.js.erb ファイルでは、問題が解決するまで問題のデバッグを支援するために、現時点でアラート ステートメントしかありません。
alert("action processed successfully");
これは、Firefox や Safari では機能しません。firebug コンソールを見ると、アラート ステートメントが ajax 呼び出しからの応答として返されていることがわかります。これは、クライアントによって JavaScript として評価されていないだけです。
参考までに、私は Rails 2.3.4 と jQuery 1.3.2 で実行しています。