我在网页中使用以下内容,但在处理时无法从服务器获得响应
<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 中的“create”方法然后愉快地处理文件并获得正确的结果(根据表单上的提交按钮)。如果我取消注释 '//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
(注意这是从另一个问题开始的,但我认为它有足够的不同值得提出自己的问题。)