3 votes

Appel jQuery $.ajax() pour obtenir JSON à partir du contrôleur Rails 3 entraîne un code 304 Non modifié?

Dans application.js j'ai :

$("#combo_box").live('change', (function() {
    $.ajax( {
                    url: '/my_controller/get_data',
                    data: {id: some_id},
                    success:  function(data){ do_stuff_with_data(data) }
             }
           )
    } ) )

et dans mon code my_controller j'ai :

  def get_data
    id = params[:id]

    @data = MyModel.DoSomeStuff(id)

    respond_to do |format|
      format.js { render :json => @data}
    end
  end

Mais pour une raison quelconque, la fonction success n'est exécutée qu'une fois (je pense) et le reste du temps, Firebug signale un 304 Non modifié lorsque le changement de la combo box déclenche un appel ajax.

Comment cela fonctionne-t-il? Merci!

7voto

mu is too short Points 205090

La méthode par défaut pour $.ajax est GET:

type String
Par défaut : 'GET'

donc votre appel $.ajax est une requête GET et quelqu'un est probablement en train de la mettre en cache. Essayez d'ajouter cache: false à vos options $.ajax:

cache Boolean
Par défaut : true, false pour les types de données 'script' et 'jsonp'
Si défini sur false, il forcera les pages demandées à ne pas être mises en cache par le navigateur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X