Domanda

Sto utilizzando quanto segue nella pagina Web ma non riesco a ottenere una risposta dal server durante l'elaborazione

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

Il metodo 'create' in fmfiles_controller.rb quindi elabora felicemente il file e ottiene i risultati giusti (secondo il pulsante di invio sul modulo). Se decomprimo la riga '// alert (' Hello ')' ricevo una finestra di dialogo che dice Hello ogni 2 secondi ... come previsto.

Tuttavia, il server non registra mai alcuna chiamata al metodo "progress_monitor" in "file" nemmeno un tentativo fallito.

Se faccio clic sul collegamento

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

effettua una chiamata al server, riceve una risposta e visualizza la finestra di dialogo, quindi suppongo che i percorsi, la sintassi e la denominazione siano tutti OK.

Non so davvero perché non funzioni. È perché 2 metodi nello stesso controller vengono chiamati tramite URL?

Sto usando Rails 2.1.0 in un ambiente di sviluppo su OS X 10.5.5 e sto usando Safari 3.1.2

(NB Questo fa seguito a un'altra question , ma io penso che sia sufficientemente diverso da meritare la sua stessa domanda.)

È stato utile?

Soluzione

Se non vedi messaggi nel tuo file di registro per la chiamata a 'progress_monitor', è possibile che la richiesta non venga mai inviata.

Prova questo:

  1. Prova a utilizzare l'URL completo anziché l'URL relativo per Ajax.Request. Ho avuto problemi con gli URL relativi su alcuni browser con Ajax.Request.

  2. Abilita Firebug o IE Developer Toolbar. Dovresti essere in grado di vedere se la chiamata a progress_monitor funziona o meno. Se c'è un errore di script Java, vedrai chiaramente l'errore usando questi strumenti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top