2010-07-11 5 views
0

J'utilise jQuery getScript dans Rails pour charger une recherche AJAX sur une page de tableau de bord. J'ai juste remarqué, cependant, qu'en plus de faire correctement l'appel, il recharge aussi la page entière (en arrière-plan).Rails demande AJAX appelant également toute la page d'origine

Je ne sais pas pourquoi cela se produit.

J'ai vérifié tous mes before_filters, toute ma logique d'authentification, j'ai essayé d'utiliser différentes fonctions ajax jQuery (get, getJSON, etc.), mais rien. il recharge toujours la page. De plus, les deux routes sont sur des contrôleurs différents!

Est-ce que quelqu'un sait ce qui pourrait se passer?

EDIT:

RÉSOLU. J'utilisais une fonction $ .ajax ({}) en plus d'une fonction $ .get() pour définir une fonction before. Quelque chose dans le $ .ajax a dû déclencher l'appel, donc j'ai simplement fusionné les nouvelles fonctions en une et cela a résolu mon problème. Par contre, la requête xhr, que j'ai découverte dans ce processus, est utile pour détecter les appels javascript et empêcher certaines actions de répondre à javascript.

+0

Montrez l'action de votre contrôleur qui répond à l'appel AJAX. Assurez-vous également que vous envoyez les en-têtes d'acceptation corrects? Tels que: 'text/xml',' text/javascript' ou 'application/json'? –

+0

aussi, en attendant j'utilise une réponse simple.xhr? before_filter sur la page/dash (qui est la page appelée à nouveau), donc au moins ça ne retourne rien, mais c'est toujours bizarre et ennuyeux –

+0

Vous devriez poster la résolution comme une réponse, vous pouvez répondre/accepter vous-même question, cela peut aider les futures personnes avec ce même problème un peu plus vite :) –

Répondre

0

Cette jquery javascript déclenchait l'appel supplémentaire:

$.getScript(correct_url, function({ 
     $.ajax({beforeSend: function(){}...)} 
     callback code 
)} 

Vous ne pouvez pas utiliser les raccourcis dans la fonction ajax raccourci getScript comme ça. L'intérieur .ajax faisait son propre appel. Je les ai donc simplement combinés en une seule fonction .ajax

$.ajax({ 
    url: correct_url, 
    type: 'get', 
    dataType: 'script', 
    beforeSend: function(){ 

     }), 
     success: function(){ 
      <callback code> 
     } 
})