Я использую следующее на веб-странице, но не могу получить ответ от сервера во время его обработки
<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);" %>
Затем метод 'create' в fmfiles_controller.rb успешно обрабатывает файл и получает правильные результаты (согласно кнопке отправки в форме). Если я раскомментирую строку '// alert (' Hello ')', я получаю диалоговое окно с сообщением Hello каждые 2 секунды ... как и ожидалось.
Однако сервер никогда не регистрирует ни одного вызова метода 'progress_monitor' в 'файлах', даже неудачной попытки.
Если я нажму на ссылку
<a href="#" onclick="updateProgress();">Run</a>
он звонит на сервер, получает ответ и отображает диалоговое окно, поэтому я предполагаю, что с маршрутами, синтаксисом и именами все в порядке.
Я действительно не знаю, почему это не работает. Это потому, что 2 метода в одном контроллере вызываются через URL?
Я использую Rails 2.1.0 в среде разработки на OS X 10.5.5 и использую Safari 3.1.2
(N.B. Это следует из другого вопроса , но я думаю, что он достаточно отличается, чтобы заслужить свой вопрос.)