js no funciona en Chrome pero funciona en IE [duplicado]
Frecuentes
Visto 133 veces
-1
Tengo un código JS que funciona en el navegador IE. Pero no funciona en Chrome y Mozilla. ¿Qué se debe cambiar para que funcione en estos navegadores?
<html>
<head>
<script type="text/javascript">
function readFile(url) {
pageRequest = new XMLHttpRequest()
pageRequest.open("GET", url, false);
pageRequest.send(null);
return pageRequest.responseText;
}
</script>
</head>
<body>
<script type="text/javascript">
var txt = readFile("?GameID=5&from=0&num=50000");
document.write(txt);
</script>
</body>
</html>
function readFile(url) {
var request = new XMLHttpRequest();
request.open("GET", url, false);
request.send();
return request;
}
var request = readFile("http://? GameID=5&from=0&num=50000");
request.onload = function() {
document.write(request.responseText);
};
este código no funciona ni en IE ni en Chrome)) alguna otra idea?
2 Respuestas
1
Esto ocurre debido al uso compartido de recursos entre orígenes, haga clic en aquí para más detalles. Debe configurar el encabezado Access-Control-Allow-Origin en el servidor y definir los dominios que tienen permisos para acceder al recurso. Probé su código en un servidor con Internet Explorer y obtuve el mismo error.
Respondido el 03 de diciembre de 13 a las 16:12
0
Tienes problemas de sincronización. Si la solicitud HTTP aún no finalizó, no podrá acceder request.responseText
. Esto podría funcionar en algunos navegadores por pura casualidad. Así que tenemos que adjuntar un onload
oyente de eventos.
Pruebe este código:
function readFile(url) {
var request = new XMLHttpRequest();
request.open("GET", url, false);
request.send();
return request;
}
var request = readFile("http://example.com/displayScore.php?GameID=5&from=0&num=50000");
request.onload = function() {
document.write(request.responseText);
};
También podrías pasar readFile
un segundo parámetro que es una función como esta en lugar de devolver el objeto completo:
function readFile(url, onload) {
//load code goes here...
if (typeof onload == "function") {
request.onload = function(){
onload(request),
};
}
}
readFile("url", function(e){
document.write(e.responseText);
});
Respondido el 06 de diciembre de 13 a las 20:12
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas javascript jquery html internet-explorer google-chrome or haz tu propia pregunta.
Bienvenido a desbordamiento de pila. Parece que has caído en la trampa del clásico problema asincrónico: consulta ¿Cómo devolver la respuesta de una llamada AJAX? para obtener más información sobre este tema. - Qantas 94 Heavy
probablemente necesite un punto y coma....
pageRequest = new XMLHttpRequest();
- MonkeyZeus@MonkeyZeus: no tiene nada que ver con eso, aunque personalmente uso puntos y comas cuando es necesario (sin ASI). - Qantas 94 Heavy
@ Qantas94Heavy No confío en los puntos y comas perdidos, nunca. - MonkeyZeus
Si su IE tiene más de 7 años, deberá usar ActiveX para su solicitud. - sheng