Frage

Ich bin mit dem folgend in der Web-Seite kann aber keine Antwort vom Server erhalten, während es der Verarbeitung

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

Die ‚create‘ Methode in fmfiles_controller.rb verarbeitet dann glücklich die Datei und bekommt die richtigen Ergebnisse (nach dem Knopf auf dem Formular). Wenn ich die ‚// alert (‘ Hallo ‚)‘ Kommentar- Linie Ich erhalte einen Dialog zu sagen Hallo alle 2 Sekunden ... wie erwartet.

Allerdings meldet sich der Server nie Aufruf von ‚progress_monitor‘ Methode in ‚Dateien‘ nicht einmal ein gescheiterter Versuch.

Wenn ich auf den Link klicken

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

es macht einen Aufruf an den Server, bekommt eine Antwort und zeigt den Dialog, so gehe ich davon aus, die Routen und die Syntax und Namensgebung ist alles in Ordnung.

Ich weiß wirklich nicht, warum das nicht funktioniert. Ist es, weil zwei Methoden in den gleichen Controller werden über URLs genannt?

Ich bin mit Rails 2.1.0 in einer Entwicklungsumgebung auf OS X 10.5.5 und mit Safari 3.1.2

(NB Dies folgt aus einer anderen Frage , aber ich denke, es ist ausreichend verschieden ist seine eigene Frage zu verdienen.)

War es hilfreich?

Lösung

Wenn Sie keine Nachrichten in der Protokolldatei für den Aufruf von ‚progress_monitor‘ zu sehen, dann ist es möglich, dass die Anforderung nicht gesendet werden.

Versuchen Sie folgendes:

  1. Versuchen Sie, die vollständige URL statt die relative URL für die Ajax.Request verwenden. Ich habe Probleme mit relativen URLs in einigen Browsern mit dem Ajax.Request hat.

  2. Aktivieren Sie Firebug oder den IE Developer Toolbar. Sie sollten in der Lage sein zu sehen, ob der Anruf Werke progress_monitor oder nicht. Wenn es einen Fehler Java-Script ist dann sehen Sie den Fehler, diese Werkzeuge deutlich werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top