js-header

Internet Explorer cachea las peticiones Ajax en jQuery

No se si en otros framework esté pasando, pero lo que es jquery me ha vuelto loco.

Una petición que tenia que mandarme data nueva constantemente se quedaba con los datos que recuperaba al principio pero funcionaba en todos los otros navegadores. TODOS.

La solución ES UNA BOLUDEZ:

Pongan esta linea al principio del js o antes de la petición ajax. Afecta a cualquier tipo de llamada: $.post(), $.get(), $.ajax().

27 Comments

  • andres 13/05/2010

    Tenía el mismo problema. Todo funcionaba bien excepto en IE 6,7,8, le agregué la línea como tu decias y me funcionó perfecto.

    Muchas gracias.

  • Rodolfo 23/07/2010

    Muy bueno tu aporte. Me solucionaste el problema.

    Gracias

  • D-Cis 14/08/2010

    IE SUKZ

  • moises rebolledo 22/11/2010

    Excelente!! ya me estaba volviendo loco por el estupido IE Grax!!

  • Virt 06/01/2011

    Funcionó perfecto. Muchas gracias!

  • Darwin Villalobos 03/02/2011

    Genial!!, Estoy haciendo un modulo de ventas y algunas peticiones ajax de type Get, tenian problemas.

    Moraleja: No siempre es bueno la chaché

  • fel 09/05/2011

    Excelente compadre me salvo la pega !!

  • Mariana 03/08/2011

    Dosmil Millones de GRACIAS! 🙂

  • Sergi 20/10/2011

    Joder… vaya marrón nos acabas de quitar de encima… puto amo =)

  • Katerin Bernal 16/12/2011

    Muy buen Datos muchas gracias funcionó en One!!!

  • djmuler 07/05/2012

    He visto la luz!!!!
    Gracias!!!

  • Airam 09/08/2012

    Muchas gracias, funciona así correctamente.!!!

  • Javier Alejandro 24/01/2013

    Bárbaro, funcionó perfectamente. Gracias!

  • Maria 06/05/2013

    Hola, he intentado colocar esta línea en dos js que tengo, pero mi web sigue sin funcionar en ie. Un js es el query y el otro es uno que he creado para cargar select en función de otros select haciendo consultas a una base de datos. ¿Dónde tendría que colocar exactamente la línea?, porque creo que no lo estoy haciendo bien. Gracias.

    • Capy 06/05/2013

      podrías ponerme el código en un comentario asi lo veo?

  • Maria 06/05/2013

    La línea la he puesto antes de las dos funciones pensando que sería ese el sitio donde colocarla, pero no va

    • Capy 07/05/2013

      Maria perdón, ayer estaba liado. El codigo se ve bien, lo unico que puede ser un poco peligroso es “toLoad” porque por ejemplo:

      Si tenemos esto:

      y estamos en http://www.tupagina.com, el script entiende que tiene que ir a http://www.tupagina.com/codigos.php?numex….
      Pero si estamos en
      http://www.tupagina.com/alguna/seccion la cosa cambia porque va a querer acceder a http://www.tupagina.com/alguna/seccion/codigos.php?numex….
      La solucion es poner un “/” delante:

      Al margen de eso no veo problema con este script. te funciona en firefox y chrome?

      ah y $.ajaxSetup({ cache: false }); va fuera de las funciones. Es un configurador global.

      • Maria 07/05/2013

        Sí, en chrome y firefox funciona sin ningún problema, he añadido la / y nada, en ie al seleccionar la opción del primer select no me carga el segundo con los datos correspondientes.
        Gracias de todas maneras.

          • Maria 07/05/2013

            Voy a hacer pruebas y te comento

          • Maria 07/05/2013

            No hay manera,

            El código que he probado sería éste. Fíjate que la parte de reconocer ie está entre comentarios. Si se los quito no funciona la del change, reconoce el click pero no se cargan los datos. Se queda como una lista grande pero vacía.

  • Maria 07/05/2013

    Por fiiiiiinnnn, el problema estaba en las dos últimas líneas
    mysql_free_result($row);
    mysql_close($conexion);

    Las he quitado y ya funciona sin problema en todos sitios.
    Muchas gracias por todo y perdona las molestias.

    • Capy 07/05/2013

      Me alegro mucho por ti 🙂

  • Maria 07/05/2013

    Me acabo de dar cuenta de que el problema está en codigos.php. El evento lo reconoce pero no carga bien los datos.

    Si cargo el valor con algo fijo funciona, si depende del select y while no lo hace en ie.

  • fernando 23/05/2014

    Gracias. se soluciono mi problema con solo poner esa linea de codigo principio.Muchas gracias.

  • Neolanis Suarez 19/10/2014

    Amigo hice lo que recomiendas y no me funciona en IE9
    este es el codigo

    $.ajaxSetup({ cache: false });

    $(function(){
    var claveB =””;
    $.ajax({
    type: “POST”,
    url: “Imprime.php”,
    data:{id: claveB}, // Adjuntar los campos del formulario enviado seria asi: data: $(“#formulario”).serialize(),
    success: function(data)
    {
    $(“#div-imprime”).html(data); // Mostrar la respuestas del script PHP.
    }
    });

    return false; // Evitar ejecutar el submit del formulario.
    });

    No se porque no me funciona…

  • Matias 25/03/2015

    Sos un grande, me solucionaste la vida

:).