Question

J'utilise les éléments suivants dans la page Web, mais je ne peux pas obtenir de réponse du serveur pendant le traitement de celle-ci

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

La méthode 'create' dans fmfiles_controller.rb traite ensuite le fichier avec bonheur et obtient les bons résultats (comme pour le bouton d'envoi du formulaire). Si je supprime la mise en commentaire de la ligne '// alert (' Hello ')', une boîte de dialogue s'affiche pour indiquer le bonjour toutes les 2 secondes ... comme prévu.

Cependant, le serveur n'enregistre jamais aucun appel à la méthode 'progress_monitor' dans des 'fichiers' même avec une tentative infructueuse.

Si je clique sur le lien

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

il appelle le serveur, obtient une réponse et affiche la boîte de dialogue. Je suppose donc que les itinéraires, la syntaxe et la dénomination sont corrects.

Je ne sais vraiment pas pourquoi cela ne fonctionne pas. Est-ce parce que 2 méthodes du même contrôleur sont appelées via des URL?

J'utilise Rails 2.1.0 dans un environnement de développement sous OS X 10.5.5 et j'utilise Safari 3.1.2

(NB Ceci fait suite à une autre question , mais je pense que c'est suffisamment différent pour mériter sa propre question.)

Était-ce utile?

La solution

Si vous ne voyez pas de messages dans votre fichier journal pour l'appel à 'progress_monitor', il est possible que la demande ne soit jamais envoyée.

Essayez ceci:

  1. Essayez d’utiliser l’URL complète au lieu de l’URL relative pour Ajax.Request. J'ai eu des problèmes avec les URL relatives sur certains navigateurs avec Ajax.Request.

  2. Activez Firebug ou la barre d’outils pour les développeurs IE. Vous devriez pouvoir voir si l’appel à progress_monitor fonctionne ou non. S'il y a une erreur de script Java, vous verrez l'erreur clairement en utilisant ces outils.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top