2011-01-14 22 views
5

Tengo un problema, adivina qué, IE8. El siguiente código, simplificada para mayor claridad, no funciona en absoluto:Jquery .get() no funciona en Internet Explorer

alert('before get'); 

$.get(getActivityURL('ActionName',{ 
    ts: new Date().getTime(), ...other params...}), 
{cache:false;}, 
    function (xml) { 
    alert("in get callback"); 
},'xml'); // End $.get() 

alert('in after get'); 

la getActivityUrl() muestra una URL válida con parámetros de la petición.

Esto funciona correctamente en FF y Chrome. Sin embargo, en IE8, esto ni siquiera entra en la devolución de llamada $ .get(). Recibo las alertas "antes" y "después", pero no la alerta "in" y, de hecho, no sucede nada y la solicitud NO se envía. Realmente no sé qué pensar aquí.

Los encabezados de respuesta son "Content-Type: application/xml; charset: iso-8859-1" como se confirmó en FF.

EDITAR: $ .post() tampoco funciona.

+0

¿Podría proporcionar la llamada de función completa, en lugar de una con bits perdidos? Su código actual no funcionaría en ningún navegador. – lonesomeday

+0

Este código exacto funciona en todos los navegadores, salvo IE8. El "getActivityUrl (...)" devuelve una URL válida. – Alessandro

Respuesta

0
$J.get(getActivityURL('ActionName' 

// End $.get() 

¿Es esto correcto? Quiero decir $ J ... ¿Estás usando más de un framework JS o algo así?

+0

Entonces habría arrojado un error en cada navegador. – rahul

+0

Sí, se olvidó de mencionar que, es correcto "sin conflictos" a lo largo de la aplicación. De todos modos, acabo de editar la pregunta. – Alessandro

0

tienen u trataron:

$.ajax({ 
    url: getActivityURL('ActionName',{ts: new Date().getTime(), ...other params...}), 
    data: data, 
    success: function (xml) { 
       alert("in get callback"); 
      }, 
    dataType: 'xml' 
}); 

Sólo una conjetura

EDIT:

me encontré con un interesante hilo que podría ayudarle, mira esto:

jQuery issue in Internet Explorer 8

+0

Igual que antes, sin cambios (también incluí el tipo: 'GET'). Todavía funciona en cualquier otro navegador, pero no en effing IE – Alessandro

+0

¿funciona en ie6 y 7? o no en todos los IE? –

+0

Hola amigo, edito la publicación, ¡revisa el enlace que agregué! –

1

No estoy seguro de si es un problema, pero intente para eliminar ";" en {cache: false}

IE no le gusta cualquier cosa adicional en {}, por ejemplo {a: a, b: b, c: c,} va a funcionar en FF, pero no en IE

+0

Gracias, también lo intenté, pero no tuve suerte. – Alessandro

1

Creo que hay un problema de caché en IE.

por lo que añadir Math.random(), un parámetro más al final como "&mathRandom="+Math.random(); porque el IE reconocerá misma petición como uno anterior, por lo que dará a los datos de la memoria caché en lugar de disparar petición.

+0

Esto funcionó para mí en IE9. –

13

IE es infame para el almacenamiento en caché. Por lo tanto, debe asegurarse de no obtener un resultado en caché.

Puede deshabilitar el almacenamiento en caché de forma global estableciendo el valor de la propiedad del caché en falso en el método ajaxStart.

$.ajaxSetup({ 
    cache: false 
}); 

o si desea eliminar el resultado almacenado en caché en una llamada AJAX específica, Anexar un número único al final de la URL. Es posible utilizar el método $.now() para obtener un número único

$.get("someurl.php?" + $.now() ,function(result) { 
    // do something with result 
}); 

$.now() método de devolver un número que representa la hora actual.

+3

¡Esto me salvó la vida, gracias! –

+2

¡¡¡Es !!! ¡¡Gracias!! –

Cuestiones relacionadas