Cita:
en FireFox, obtiene un objeto element, pero en Internet Explore no funciona, devuelve 'null'. Que puede pasar? Cual es la solucion? GraciasobjetoXMLHttpRequest.responseXML.documentElement
|
|
#1 (permalink) |
![]() Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 503
|
responseXML.documentElement no funciona en IE (replanteo el problema)
Cita:
en FireFox, obtiene un objeto element, pero en Internet Explore no funciona, devuelve 'null'. Que puede pasar? Cual es la solucion? GraciasobjetoXMLHttpRequest.responseXML.documentElement
__________________
Solo hay 10 clases de personas, las que saben binario y las que no.
Última edición por oskarL; 18-abr-2006 a las 09:24. Razón: Error en el titulo |
|
|
|
|
|
#3 (permalink) |
![]() Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
|
Muestra tu codigo completo, talves tienes algun error a la hora de crear el objeto XMLHttpRequest.. me suena como a q solo creaste el objeto para firefox y no para exploiter.... pero igual y estoy equivocado, asi q mejor seria pusieras el codigo completo..
|
|
|
|
|
|
#4 (permalink) |
![]() Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 503
|
Mejor no muestro todo el codigo, porque es demasiado, pero si que pongo la funcion con la que creo el objeto XMLHttpRequest, a ver si hay algun fallo. En principio lo hize para que funcionara con la mayoria de los navegadores, pero igual lo he hecho mal, no se...
Cita:
function objetus() {
var xmlhttp; if (window.XMLHttpRequest) { // Mozilla, Safari,... xmlhttp = new XMLHttpRequest(); if (xmlhttp.overrideMimeType) { xmlhttp.overrideMimeType('text/xml'); } } else if (window.ActiveXObject) { // IE try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } return xmlhttp; } Sinceramente no creo que ese sea el error, porque al hacer estos alerts
Cita:
En FireFox aparece '[objeto tal]' en los tres, y en Internet Explorer, sale '[objeto]' en los dos primeros, pero en el ultimo pone 'null'. Asi que parece que el objeto XMLHttpRequest esta bien... aunque a saber, jeje alert(objetus); //objeto XMLHttpRequest
alert(objetus.responseXML); alert(objetus.responseXML.documentElement);
__________________
Solo hay 10 clases de personas, las que saben binario y las que no.
|
|
|
|
|
|
#5 (permalink) |
![]() Fecha de Ingreso: septiembre-2005
Mensajes: 60
|
Así lo hago yo y me funciona bien
Código:
//####################################################################################
// AJAX manolowarr 2006
var ajax
var http_request
function newAJAX() {
http_request = false
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest()
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml')
}
}
else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP")
}
catch (e) {}
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP")
}
catch (e) {}
}
return http_request
}
//####################################################################################
var titulo = ""
function cargarAJAX( url ){
titulo = url
ajax = false
ajax=new AJAX()
ajax.onreadystatechange=CargarPag
ajax.open('GET', url, true)
ajax.send(null)
}
//####################################################################################
function CargarPag() {
if (ajax.readyState == 4) {
if (ajax.status == 200) {
var xmldoc = ajax.responseText
document.title = "Scripts Para Photoshop - " + titulo
myweb.innerHTML = xmldoc
}//200
}//4
}//function
//####################################################################################
__________________
---------------------------------------- visita mi página de plugins: Photoshop-Scripts.com - |
|
|
|
|
|
#6 (permalink) |
![]() Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 503
|
Claro, pero tu haces un responseText para coger los datos. Yo quiero hacer un responseXML porque lo que recibo es un XML, y quiero usar el DOM del documento
__________________
Solo hay 10 clases de personas, las que saben binario y las que no.
|
|
|
|
|
|
#7 (permalink) |
![]() Fecha de Ingreso: septiembre-2005
Mensajes: 60
|
Cita:
Observa estas dos páginas ahí utilizo responseXML , todo este código está hecho por mí
Iniciado por oskarL
Claro, pero tu haces un responseText para coger los datos. Yo quiero hacer un responseXML porque lo que recibo es un XML, y quiero usar el DOM del documento
http://www.scriptsparaphotoshop.com/rss.html http://www.scriptsparaphotoshop.com/rssB.html Descárgalo y mira el código del archivo: AJAX4.js y AJAX4b.js, lo único que lleva de más es un php para abrir los rss externo al servidor. Te pongo el código del php y lo demás lo puedes ver descargando las paginas AJAX4.php
Código:
<?php
//RSS en AJAX manolowarr 2006
header('Content-type: text/xml');
$url=$_GET['id'];
function LeerArchivoEnviarAJAX(){
global $url, $Remoto_Archivo;
$Remoto_Archivo=file_get_contents($url);
echo $Remoto_Archivo;
}
LeerArchivoEnviarAJAX();
?>
__________________
---------------------------------------- visita mi página de plugins: Photoshop-Scripts.com - |
|
|
|
|
|
#8 (permalink) |
![]() Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 503
|
Replanteo el problema...
Pues resulta que cogiendo un archivo xml directamente no tengo ningun problema...
Explico un poco lo que estoy haciendo. Se trata de un script que busca en una base de datos en funcion de lo que se escriba en una caja de texto. Devuelve el resultado de manera interactiva, asi que por eso uso AJAX. El caso es que la conexion que abro con AJAX es sobre un archivo php, que busca por el criterio de la caja de texto, y devuelve el resultado. Al principio recogia los datos con un responseText directamente, pero ahora que se un poco mas de XML estoy intentando usar su potencia, por eso lo que hago es escribir directamente etiquetas XML de esta manera: (en este archivo se escribe en una pagina una estructura XML) Código PHP:
Mas tarde probe a abrir la conexion de AJAX directamente con un XML, y ese problema ya no se daba. Como puedo solucionar este problema? ya que en principio necesito abrir una conexion con un php para que me devuelva el XML con los datos apropiados... como puedo hacer esto?? Gracias!!!
__________________
Solo hay 10 clases de personas, las que saben binario y las que no.
|
|
|
|
|
|
#9 (permalink) |
![]() ![]() |
loading.............
para el responseXML del lado del servidor debes poner las cabeceras correspondientes identificando como un documento XML Código PHP:
connection closed.
__________________
http://www.maborak.com Maborak technologies |
|
|
|
|
|
#11 (permalink) |
![]() Fecha de Ingreso: julio-2006
Mensajes: 10
|
Lo mas probable es que tengas problema con tu xml, ya que cuando esa mal hecho el sistema no lo reconoce
aca te muestro un ejemplo en donde <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <INICIO> <ENCABEZADO> <ID_SESION>19</ID_SESION> </ENCABEZADO> <ENCABEZADO> <ID_SESION>20</ID_SESION> </ENCABEZADO> </INICIO> var xml = oXML.responseXML.documentElement; document.write('<table>'); for (i = 0; i < xml.getElementsByTagName('ENCABEZADO').length; i++){ var item = xml.getElementsByTagName('ENCABEZADO')[i]; var id = item.getElementsByTagName('ID_SESION')[0].firstChild.data; } |
|
|
|
|
|
#14 (permalink) |
![]() Fecha de Ingreso: julio-2005
Mensajes: 29
|
Se que esta solucionado pero...
Hola según dicen en este foro el problema de trabajar con archivos XML en IE se soluciona con un Header, pero estoy hace unos dias que no puedo hacer correr este codigo en IE, es el mismo problema que se ha tenido desde el comienzo el responseXML.documentElement devuelve null y estoy poniendo la cabecera en el archivo php, aqui les pongo todo el codigo para que lo prueben, por favor diganme donde me equivoco:
Archivo html (books.html): Código HTML:
<html> <head> <title>AJAX Foundations: JavaScript and XML</title> <script type="text/javascript" src="books.js"></script> </head> <body onload="process()"> Server, tell me your favorite books! <br/> <div id="myDivElement" /> </body> </html>
Código:
Y el archivo .php que responde (respondo.php):var xmlHttp = createXmlHttpRequestObject();
function createXmlHttpRequestObject(){
var xmlHttp;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
xmlHttp = new XMLHttpRequest();
if (xmlHttp.overrideMimeType) {
xmlHttp.overrideMimeType('text/xml');
}
} else if (window.ActiveXObject) { // IE
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
return xmlHttp;
}
function process(){
if (xmlHttp){
try{
xmlHttp.open("GET", "respondo.php", true);
xmlHttp.onreadystatechange = handleRequestStateChange;
xmlHttp.send(null);
}
catch (e){
alert("Can't connect to server:\n" + e.toString());
}
}
}
function handleRequestStateChange(){
if (xmlHttp.readyState == 4){
if (xmlHttp.status == 200){
try{
handleServerResponse();
}
catch(e){
alert("Error reading the response: " + e.toString());
}
}
else{
alert("There was a problem retrieving the data:\n" + xmlHttp.statusText);
}
}
}
function handleServerResponse(){
xmlRoot = xmlHttp.responseXML.documentElement;
titleArray = xmlRoot.getElementsByTagName("title");
isbnArray = xmlRoot.getElementsByTagName("isbn");
var html = "";
for (var i=0; i<titleArray.length; i++)
html += titleArray.item(i).firstChild.data + ", " + isbnArray.item(i).firstChild.data + "<br/>";
myDiv = document.getElementById("myDivElement");
myDiv.innerHTML = "Server says: <br />" + html;
}
Código PHP:
Muchas Gracias.
__________________
.:Ju@nK:. |
|
|
|
|
|
#15 (permalink) |
![]() |
Re: responseXML.documentElement no funciona en IE
Buenas, resucito este tema porque no encuentro solución y aquí por lo menos está el problema enfocado.
La cosa es que he probado en Safari para windows, Netscape 9, Opera 9 y Firefox 2.0.0.12 y funciona correctamente, pero en IE7 no :( Os pongo el codigo a ver que opinais: JS-> Creacion del objeto XML (funciona): Código PHP:
Código PHP:
Código PHP:
Código PHP:
Última edición por mgusdl; 31-mar-2008 a las 02:04. Razón: cambio etiquetas de codigo |
|
|
|
|
|
#16 (permalink) |
![]() ![]() |
Re: responseXML.documentElement no funciona en IE
loading...........
Bueno:
![]() ![]() ![]() ![]() ![]() Suerte :D connection closed.
__________________
http://www.maborak.com Maborak technologies |
|
|
|
|
|
#17 (permalink) |
![]() |
Re: responseXML.documentElement no funciona en IE
Ole! Muchas gracias por tu respuesta.
He cambiado estas 3 cosas que comentas en todas las funciones (más largas por contener más campos) y lo mismo, sigue funcionando en FF, pero en IE... : ![]()
Cita:
Encima los mensajes de linea y caracter del IE sirven para lo mismo que el dinero en la LunaLine: L
Character: C Code: 0 Error Message: El objeto no acepta esta propiedad o método URL: http://servidor/intranet/ Aun así muchas gracias por iluminarme en otros aspectos |
|
|
|