Pergunta

Eu estou usando o seguinte na página da web, mas não pode obter uma resposta do servidor enquanto ele está processando

<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);" %>

O método 'criar' em fmfiles_controller.rb em seguida, felizmente processa o arquivo e recebe os resultados da direita (conforme o botão enviar no formulário). Se eu remover o comentário da '// alert (' Olá ')' linha eu recebo uma caixa de diálogo dizendo Olá a cada 2 segundos ... como esperado.

No entanto, o servidor nunca registra qualquer chamada para 'progress_monitor' método in 'arquivos' nem mesmo uma tentativa falhou.

Se eu clicar no link

<a href="#" onclick="updateProgress();">Run</a>

faz uma chamada para o servidor, obtém uma resposta e exibe a caixa de diálogo, então eu assumir as rotas e sintaxe e nomeação é tudo OK.

Eu realmente não sei por que isso não está funcionando. Será que é porque 2 métodos no mesmo controlador estão sendo chamados via URLs?

Eu estou usando Rails 2.1.0 em um ambiente de desenvolvimento no OS X 10.5.5 e usando o Safari 3.1.2

(NB Este surge na sequência de outra questão , mas eu acho que é suficientemente diferente para merecer a sua própria pergunta.)

Foi útil?

Solução

Se você não está vendo mensagens em seu arquivo de log para a chamada para 'progress_monitor', então é possível que o pedido não está sendo enviado.

Tente isto:

  1. Tente usar a URL completa em vez da URL relativo para o Ajax.Request. Eu tive problemas com URLs relativos em alguns navegadores com o Ajax.Request.

  2. Ativar o Firebug ou a barra de ferramentas do IE Developer. Você deve ser capaz de ver se a chamada para progress_monitor funciona ou não. Se houver um erro de script java, então você vai ver o erro claramente o uso dessas ferramentas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top