2012-06-23 35 views
8

i tienen un código muy simple:jQuery.ajax() - los datos devueltos en indefinidos IE9

$.ajax({ 
    cache: false, 
    dataType: 'html', 
    complete: function(jqXHR){ 
    console.log(jqXHR.responseText); 
    }, 
    success: function(data){ 
    console.log(data); 
    }, 
    url: 'http://follows.pl/pages/ajaxtest' 
}); 

devuelve un texto en ff, cromo y IE8, pero en IE9 se nota el doble "indefinido".

He mirado en herramienta de desarrollo de IE9, y mostrando una respuesta normal por lo que la solicitud funciona bien, la respuesta está muy bien, pero las variables son definidas

cabeceras de respuesta:

Response HTTP/1.1 200 OK 
Cache-Control no-cache 
Content-Type text/html; charset: UTF-8 
Pragma no-cache 

de respuesta

string(4) "test" 
+0

[* Algunos tipos de solicitudes Ajax, como JSONP y solicitudes GET entre dominios, no usan XHR; en esos casos, los parámetros XMLHttpRequest y textStatus pasados ​​a la devolución de llamada no están definidos. *] (http://api.jquery.com/jQuery.ajax/#callback-functions) Espero que eso ocurra en todas las versiones de IE o más antiguas. en lugar de los más nuevos, sin embargo. – ThiefMaster

Respuesta

0

probar esto:

$.ajax({ 
    cache: false, 
    dataType: 'html', 
    complete: function(data){ 
    console.log(data); 
    }, 
    success: function(data){ 
    console.log(data); 
    }, 
    url: 'http://follows.pl/pages/ajaxtest' 
}); 

aviso

en la función del éxito

success: function (data, textStatus, jqXHR) 

el objeto es el argumento third.

En realidad la respuesta de los datos mediante el acceso a una propiedad que no existe allí.

también en la función completa

complete: function (jqXHR, complete_textStatus) 

aquí el objeto es first lugar!

tiene que recordar las ubicaciones.

+0

el problema es que en el éxito debería tener cualquier información, pero no la tengo. – Vexator

7

Sospecho que esto es su problema:

Content-Type text/html; charset: UTF-8 

que el valor no tiene el formato correcto (el ':' después de charset es incorrecta) e IE9 no le gusta, pero no en silencio en lugar de decir algo útil . Prueba esto:

Content-Type: text/html;charset=utf-8 
1

He intentado todo para resolver este problema de ajax publicación en el navegador Internet Explorer (por ejemplo, añadiendo a la jquery ajax sin oponerse caché, tipo de datos, configType, etc ...), pero al final el problema era no en ajax/javascript pero en el archivo PHP: sólo se para el navegador IE el archivo PHP tuvo que comenzar con el siguiente encabezado:

header("Content-type: text/html; charset=utf-8"); 

es así, usted tiene que indicar explícitamente el tipo de contenido del php página que obtienes como resultado de tu llamada ajax.

ejemplo, asumiendo una página HTML llamada uno.html donde se colocan Javascript y PHP una página llamada two.php

En uno.html establecer javascript como

var url = 'two.php'; 
$.ajax({ 
url: url, 
type: "POST", 
success: function(response){ 
alert(response) 
} 
}); 

En dos.php página establecida de la siguiente manera:

<?php 
header("Content-type: text/html; charset=utf-8"); 
echo ('stuff to do'); 
?> 

de esta manera para mí funcionó como un amuleto!

Cuestiones relacionadas