Foros del Web » Programando para Internet » PHP »

ayuda con una linea...

Estas en el tema de ayuda con una linea... en el foro de PHP en Foros del Web. que tal, no conosco PHP y ando viuenod un ejemploq ue lo usa para aprender usar AJAX, hay un archivo que entiendo a escepciòn de ...
  #1 (permalink)  
Antiguo 17/04/2007, 10:19
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 6 meses
Puntos: 3
Pregunta ayuda con una linea...

que tal, no conosco PHP y ando viuenod un ejemploq ue lo usa para aprender usar AJAX, hay un archivo que entiendo a escepciòn de una linea, el còdigo es :

Código HTML:
<?php 
$v=$_POST["v"]; 

$conexion=mysql_connect("localhost", "root", ""); 
mysql_select_db("ajax", $conexion); 

$resultado=mysql_query("SELECT nombre, apellido FROM ejemplo WHERE id='$v'"); 
$registro=mysql_fetch_row($resultado); 

$xml="<?xml version='1.0' encoding='ISO-8859-1'?>"; 
$xml.="<datos>"; 
$xml.="<nombre><![CDATA[$registro[0]]]></nombre>"; 
$xml.="<apellido><![CDATA[$registro[1]]]></apellido>"; 
$xml.="</datos>"; 
[COLOR="Red"]header("Content-type: text/xml");[/COLOR] // no comprendo esta linea
echo $xml; 
?> 
segùn yo, este archivo extrae unos datos con un parametro x, los pinta en una variable que realmente terminara siendo un XML, eso entiendo, solo que no entiendo la linea en rojo, quisioera hacer algo similar en un jsp de lo que hace este php, pero no se si esa linea que no entiendo funcionara, alguien me puede ayudar a entenderla? gracias de antemano!
__________________
Wow! No se que decir...
  #2 (permalink)  
Antiguo 17/04/2007, 10:47
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: ayuda con una linea...

Esa linea en rojo le esta indicando a PHP, que le diga al explorador, o al cliente que esta pidiendo el archivo que, el contenido que va a recibir es de tipo xml, en JSP haces algo asi:
Código:
response.setContentType("text/xml");
  #3 (permalink)  
Antiguo 17/04/2007, 11:15
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 6 meses
Puntos: 3
Re: ayuda con una linea...

hey gracias por la respuesta, ya lo puese en mi JSP pero al probarlo con la parte de AJAX no me funciono, mando un alert con el responseXML para ver que me arroja y me lo manda vacio, este es mi codigo...

Código HTML:
if(Tipo.equals("mostrar")){
        String xml="";
        String IDE=(request.getParameter("ide")==null)?"":request.getParameter("ide");

        xml="<?xml version='1.0' encoding='ISO-8859-1'?>";
        xml=xml+"<datos>";%>
    <%--Extraigo el nombre del Usuario Creador  --%>
    <sql:statement id="stmtCrea" conn="conn">
    <sql:query>
        select campo1,campo2,campo3,campo4,campo5 from ajaxprueba where campo1='<%=IDE%>'
    </sql:query>
    <sql:resultSet id="crea">
     <% //out.print("<p>"+crea.getString(1)+"</p>");
        //out.print("<p>"+crea.getString(2)+"</p>");
        //out.print("<p>"+crea.getString(3)+"</p>");
        //out.print("<p>"+crea.getString(4)+"</p>");
        //out.print("<p>"+crea.getString(5)+"</p>"); 
        xml=xml+"<campo1>"+crea.getString(1)+"</campo1>";
        xml=xml+"<campo2>"+crea.getString(2)+"</campo2>";
        xml=xml+"<campo3>"+crea.getString(3)+"</campo3>";
        xml=xml+"<campo4>"+crea.getString(4)+"</campo4>";
        xml=xml+"<campo5>"+crea.getString(5)+"</campo5>";
%>
    </sql:resultSet>
    </sql:statement>
    <%
        xml=xml+"</datos>";
        //response.setContentType("text/xml");
        out.print(xml);
        
}
si de casualidad vez algo mal espero me lo comentes, gracias!
__________________
Wow! No se que decir...
  #4 (permalink)  
Antiguo 17/04/2007, 11:37
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: ayuda con una linea...

Porque tienes comentada la linea?

si con responseXML no te da prueba con responseText a ver si ahi puedes ver el contenido de tu respuesta.

Salu2.
  #5 (permalink)  
Antiguo 17/04/2007, 12:07
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 6 meses
Puntos: 3
Re: ayuda con una linea...

a por que le puse esta linea arriba
Código HTML:
<%@ page  contentType="text/xml"%> 
para provarlo, y si ya lo mande con el responseTEXT y si me imprime el cintenido, me imprime lo que quiero del XML, pero no se si sea normal que me mande mucho espacio, el alert se imprime enorme y el XML pintado solo usa muy poco ... que puedo hacer?
__________________
Wow! No se que decir...
  #6 (permalink)  
Antiguo 17/04/2007, 12:50
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: ayuda con una linea...

Si con responseText si te imprime el contenido bien y con responseXML no te imprime nada es porque tu JSP no esta enviando el dato como XML para que Javascript lo pueda parsear como XML.

Revisa bien tu codigo y asegurate que la respuesta si se este enviando como XML, como tip puedes llamar al documento directamente (sin AJAX) y si cuando lo ves en el explorador se ve texto, es que no es un XML, si ves un documento XML (normalmente los exploradores como IE, y FF, te avisan que es un XML, entonces habria que checar alguna otra cosa.

Salu2.
  #7 (permalink)  
Antiguo 17/04/2007, 14:57
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 6 meses
Puntos: 3
Re: ayuda con una linea...

a gracias por el tip, lo probare enseguida!!!
Gracias de nuevo!
__________________
Wow! No se que decir...
  #8 (permalink)  
Antiguo 17/04/2007, 15:20
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 6 meses
Puntos: 3
Re: ayuda con una linea...

Ya lo probe, mande a llamar la pagina y me arrojo esto en pantalla:

Código HTML:
<?xml version="1.0" encoding="ISO-8859-1" ?> 
- <datos>
  <campo1>001</campo1> 
  <campo2>Josue</campo2> 
  <campo3>Informática</campo3> 
  <campo4>si</campo4> 
  <campo5>no</campo5> 
  </datos> 
entonces significa que no me lo manda como XML? se me hace curioso que ese signo de menos ( - ) antes de <datos> contrae o extiende los datos... la info que muestra es lo que quiero, pero no se que hacerle, en el jsp que genera esta salida es:

Código HTML:
<%@ taglib uri="WEB-INF/taglibs-dbtags.tld" prefix="sql"%>
<%@ page import = "java.text.*" %>

<%@ include file="../connect.jsp" %>

<sql:connection id="conn">
    <sql:userId><%=ConnUser%></sql:userId>
    <sql:password><%=ConnPass%></sql:password>
    <sql:url><%=ConnUrl%></sql:url>
    <sql:driver>com.microsoft.jdbc.sqlserver.SQLServerDriver</sql:driver>
</sql:connection>

<%
String Tipo=(request.getParameter("tipo")==null)?"":request.getParameter("tipo");
%>

<%if(Tipo!=null){

    if(Tipo.equals("mostrar")){
        String xml="";
        String IDE=(request.getParameter("ide")==null)?"":request.getParameter("ide");

        xml="<?xml version='1.0' encoding='ISO-8859-1'?>";
        xml=xml+"<datos>";%>
    <%--Extraigo el nombre del Usuario Creador  --%>
    <sql:statement id="stmtCrea" conn="conn">
    <sql:query>
        select campo1,campo2,campo3,campo4,campo5 from ajaxprueba where campo1='<%=IDE%>'
    </sql:query>
    <sql:resultSet id="crea">
     <% 
        xml=xml+"<campo1>"+crea.getString(1)+"</campo1>";
        xml=xml+"<campo2>"+crea.getString(2)+"</campo2>";
        xml=xml+"<campo3>"+crea.getString(3)+"</campo3>";
        xml=xml+"<campo4>"+crea.getString(4)+"</campo4>";
        xml=xml+"<campo5>"+crea.getString(5)+"</campo5>";
%>
    </sql:resultSet>
    </sql:statement>
    <%
        xml=xml+"</datos>";
        response.setContentType("text/xml");
        out.print(xml);
        
    }
}//Fin de null...%>

<sql:closeConnection conn="conn"/> 
y el JSP donde viene la función de AJAX es :

Código HTML:
//************************************************************
//esto viene como encabezado en el jsp:
//<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
//************************************************************

function MostrarConsulta(datos){

        divResultado = document.getElementById('resultado');
        var id=document.getElementById("idm"); 
        var nom=document.getElementById("nombrem"); 
        var dep=document.getElementById("deptom"); 
        var a=document.getElementById("am"); 
        var b=document.getElementById("bm"); 
        
        ajax=objetoAjax();
        ajax.open("POST", datos,true);
        //ajax.overrideMimeType("text/xml"); 
        //ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        ajax.onreadystatechange=function() {
               if (ajax.readyState==4) {
                if(ajax.status==200){
                       var vari = ajax.responseXML;
                       alert('vari - '+vari+'-');
                       id.value = vari.getElementsByTagName("campo1")[0].childNodes[0].data; 
                       // mas campos....
                }
               }
        }
        ajax.send(null)
}
ojala puedas hecharme la mano para saber por que no me lo lee como XML, de antemano gracias!!!
__________________
Wow! No se que decir...
  #9 (permalink)  
Antiguo 17/04/2007, 16:41
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: ayuda con una linea...

Por lo que veo tu JSP esta bien, ya que te arroja bien el contenido en pantalla, en tu AJAX prueba esto:
Código:
ajax.onreadystatechange=function() {
               if (ajax.readyState==4) {
                if(ajax.status==200){
                       alert( ajax.responseText );
                       alert( typeof(ajax.responseXML) );
                }
               }
        }
y dime que salida te da en los dos casos.
  #10 (permalink)  
Antiguo 18/04/2007, 07:04
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 6 meses
Puntos: 3
Re: ayuda con una linea...

Entonces lo que me arroja el JSP al llamarlo directo si es XML? y en el primer caso me dio de salida [object] y en el segundo solo object, tienes alguna idea con eso de que pasa?
__________________
Wow! No se que decir...
  #11 (permalink)  
Antiguo 18/04/2007, 07:52
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: ayuda con una linea...

Raro, en el primer de los casos te deberia de dar todo el XML, y en el segundo te deberia de decir objectXML o algo parecido, te recomiendo que uses una libreria como prototype para hacer tus requests ya que tienen un metodo de inspect muy bueno que te puede ayudar a ver que es lo que retorna tu funcion.

Saludos.
  #12 (permalink)  
Antiguo 18/04/2007, 08:25
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 6 meses
Puntos: 3
Re: ayuda con una linea...

mm encontre para descargar un archivo prototype.js, ese es el archivo que mencionas y ademas como funciona? algo mas, en la funcion donde mando a llamar el JSP que me crea el XML le servirian de algo alguna de estas dos lineas?

//ajax.overrideMimeType("text/xml");
//ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
__________________
Wow! No se que decir...
  #13 (permalink)  
Antiguo 18/04/2007, 16:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: ayuda con una linea...

No, pero si ya tienes el prototype usa un request normal:
Código:
pars = "unParametro=" + unValor;
new Ajax.Request( '/path/al/jsp', { method: 'get', parameters: pars, onSuccess: function(transport) { alert( transport.responseText.inspect() ); alert( transport.responseXML.inspect() ); } } );
  #14 (permalink)  
Antiguo 18/04/2007, 18:00
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 6 meses
Puntos: 3
Re: ayuda con una linea...

mm pero para que me sirve el prototype?
__________________
Wow! No se que decir...
  #15 (permalink)  
Antiguo 18/04/2007, 19:14
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: ayuda con una linea...

El prototype te sirve para poder hacer requests AJAX de una forma mas sencilla
  #16 (permalink)  
Antiguo 19/04/2007, 06:14
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 6 meses
Puntos: 3
Re: ayuda con una linea...

sabes, estube insistiendo y ya me funciona el responseXML pero si lo uso llmando un archivoXML y no creado desde un JSP, entonces ahora creo que el problema esta en el JSP que devuelve un XML, solo que no se si se necesita algo mas que la linea de código response.setContentType("text/xml"); para indicarle al navegador que es un xml :(
__________________
Wow! No se que decir...
  #17 (permalink)  
Antiguo 19/04/2007, 07:47
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: ayuda con una linea...

En teoria no necesitas nada mas, ya que si al llamar al JSP directamente te devuelve el XML no tendrias problema.

Tambien podrias darte una vuelta y mirar el JSON, es otra forma de intercambiar datos con objetos nativos de JavaScript.
  #18 (permalink)  
Antiguo 19/04/2007, 08:11
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 6 meses
Puntos: 3
Re: ayuda con una linea...

por hay me comentaron en este mismo foro que response.setContentType("text/xml"); solo funciona para los Servlets, que en un JSP usara <%@ page contentType="text/xml"%> y no entiendo eso de los objetos nativos, por que lo dices? obviamente no conosco JSON :P
__________________
Wow! No se que decir...
  #19 (permalink)  
Antiguo 19/04/2007, 08:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: ayuda con una linea...

JSON es una forma de enviar objetos entre varios lenguajes hacia Javascript, significa JavaScript Object Notation.

Te recomiendo le heches una leida en Google, respecto a lo otro prueba hacerlo asi a ver si te da.

Saludos.
  #20 (permalink)  
Antiguo 19/04/2007, 08:38
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 6 meses
Puntos: 3
Re: ayuda con una linea...

pues ya lo he probado de las dos maneras que te digo, pero nada y ok, le dare una leida....

aunque ya me estoy sintiendo desesperado...solo necesito hacer que lo lea como un XML y ya podre avanzar mas rapido...
pero no me sale
__________________
Wow! No se que decir...
  #21 (permalink)  
Antiguo 19/04/2007, 10:21
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 6 meses
Puntos: 3
Re: ayuda con una linea...

ya lo resolvi! era una tonteria! lo del encabezado era literal, mi error era que no ponia nada mas <?xml version="1.0" encoding="ISO-8859-1"?> hasta la parte superior del JSP...eso era todo!!!!!! que tonto me siento, pero bueno, gracias por tu ayuda y tiempo!!!!
__________________
Wow! No se que decir...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:20.