Web ページで以下を使用していますが、処理中にサーバーから応答を取得できません
<script type="text/javascript">
<!--
function updateProgress() {
//alert('Hello');
new Ajax.Request('/fmfiles/progress_monitor', {
parameters: 'authenticity_token=' + encodeURIComponent(AUTH_TOKEN),
onSuccess: function(response) {
alert(response.responseText);
fillProgress('progressBar',response.responseText);
}
});
}
//-->
</script>
<% form_for( :fmfile, :url => '/fmfiles', :html => { :method => :post, :name => 'Form_Import', :enctype => 'multipart/form-data' } ) do |f| %>
...
<%= f.file_field :document, :accept => 'text/xml', :name => 'fmfile_document' %>
<%= submit_tag 'Import', :onClick => "setInterval('updateProgress()', 2000);" %>
次に、fmfiles_controller.rb の「作成」メソッドがファイルを喜んで処理し、(フォームの送信ボタンに従って) 正しい結果を取得します。'//alert('Hello')' 行のコメントを外すと、2 秒ごとに Hello というダイアログが表示されます ... 予想通りです。
ただし、サーバーは「ファイル」の「progress_monitor」メソッドへの呼び出しをログに記録することはありません。
リンクをクリックすると
<a href="#" onclick="updateProgress();">Run</a>
サーバーを呼び出し、応答を取得してダイアログを表示するので、ルートと構文と命名はすべて問題ないと思います。
なぜこれが機能しないのか、私には本当にわかりません。同じコントローラー内の 2 つのメソッドが URL 経由で呼び出されているためですか?
OS X 10.5.5 の開発環境で Rails 2.1.0 を使用し、Safari 3.1.2 を使用しています。
(NB これは別の質問の続きですが、独自の質問に値するほど十分に異なると思います。)