¿Cómo podemos llamar a AJAX en Firefox?
Frecuentes
Visto 204 veces
-3
Estoy haciendo una llamada AJAX usando el XMLHttpRequest
.
Funciona bien en IE7, pero cuando intento lo mismo en Firefox, no puedo recuperarlo a través del response.write
Estoy usando la siguiente función:
<script type="text/javascript">
function ddSelect_Change() {
var xmlhttp;
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
xmlhttp = new XMLHttpRequest();
}
else if (window.ActiveXObject) { // IE
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
}
}
}
xmlhttp.onreadystatechange = function () {
//alert(xmlhttp.responseText);
if (xmlhttp.readyState === 4 && xmlhttp.status === 200) {
}
}
var url = "http://" + location.hostname + "Locationurl?Method=methodname";
xmlhttp.open("POST", url);
xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xmlhttp.send();
}
ADICIONAL
Tengo dos aplicaciones web separadas, una es la aplicación web tridion y la otra es una aplicación web personalizada. y estoy haciendo interacción desde la aplicación web tridion a la aplicación web personalizada. Tanto la URL tiene un dominio diferente como el estado en el que obtengo 0 en Firefox, y para el estado listo no obtengo (3) en mi alerta.
2 Respuestas
3
El código que has mostrado hasta ahora debería funcionar en Firefox. Firefox admite XHR.
Esto podría ser de ayuda: https://developer.mozilla.org/en-US/docs/AJAX/Getting_Started
Actualizar:
onreadystatechange
se activa varias veces durante una llamada AJAX, por lo que probablemente desee extender su devolución de llamada a algo como esto:
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState === 4) {
if (xmlhttp.status === 200) {
alert(xmlhttp.responseText);
} else {
alert('There was a problem with the request.');
}
}
}
xmlhttp.readyState === 4
verifica que la solicitud se haya completado, de modo que no intente alertar la respuesta antes de que realmente la tenga. xmlhttp.status === 200
verifica que recibiste un 200 OK
del servidor, para asegurarse de que no haya errores del lado del servidor o que la URL sea incorrecta.
Respondido 24 ago 12, 08:08
Gracias, he usado el mismo código que me sugiriste, pero aún no logro que funcione en Firefox. SDLPrincipiante
@SDLBeginner ¿Recibe algún error en Firefox? ¿Cómo se activa la llamada AJAX? ¿Puede ser que el código que activa la llamada no funcione en Firefox? ¿Qué sucede si solo haces: xmlhttp.onreadystatechange = function () { alert(xmlhttp.readyState); }
¿Recibes alguna alerta entonces? - cristofer eliasson
No, cuando me quedo solo xmlhttp.onreadystatechange = function () { alert(xmlhttp.readyState); }
Recibo 1 como primera alerta y 4 como segunda alerta. Mantuve mi código editado en duda. - SDLPrincipiante
@SDLBeginner Bien, entonces sabemos que la llamada se activa al menos. Si lo extiendes a xmlhttp.onreadystatechange = function () { if (xmlhttp.readyState === 4) { alert(xmlhttp.status); }}
¿Entonces obtienes 200
como su alerta? - cristofer eliasson
@SDLBeginner En ese caso, dado que realmente desea realizar solicitudes entre dominios, tendría que investigar CORSo JSON-P. - cristofer eliasson
1
¿Ha considerado usar una biblioteca como jQuery? Ya se ha ocupado de estos problemas por usted.
Si está trabajando en una extensión de GUI de SDL Tridion, consulte el proyecto PowerTools para ver muchos ejemplos. (http://code.google.com/p/tridion-2011-power-tools/)
Respondido 24 ago 12, 08:08
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas c# javascript ajax or haz tu propia pregunta.
¿Cómo se ve el resto de su código AJAX? - Christofer Eliasson
@ChristoferEliasson estoy usando códigos de descanso como el anterior. - SDLBeginner
¿Recibe algún error JS? Si registra su tráfico HTTP usando fiddler, ¿se realiza una llamada al servidor o no? - Christofer Eliasson
Es posible que deba asegurarse de que su función onreadystatechange esté definida antes de llamar a .send() (su explicación anterior no aclara si está haciendo esto o no). - Pebbl