Tutorial de AJAX (Asynchronous JavaScript + XML) - Recibiendo los resultados del procesador

10 - Recibiendo los resultados del procesador

[editar]
Tutorial creado por Mononeurona. Extraido de: http://www.mononeurona.org/index.php?idp=547
27 de Octubre de 2005
Hay dos maneras en las que se puede recibir la informacion devuelta por el procesador, las propiedades: responseText y responseXML


  • responseText: Con esta propiedad se reciben los datos de la siguiente manera. Cuando el estado del proceso esté en el nivel 4
    vari=objetus.responseText
    Entonces aqui la variable vari contendrá el resultado del procesador.
    Ejemplo:------##window.alert(vari)##------Esto es lo que usamos en nuestro primer ejemplo, aqui cuando el proceso llega a nivel 4 creamos un alert con los datos que nos a enviado el procesador.
  • responseXML:
    Con esta propiedad el procesador nos devuelve los datos como XML y debemos recorrerlo mediante las funciones del DOM (getEementsByTagName, etc).
    vari=objetus.responseXML
    Guardamos el documento devuelto en la variable vari para luego recorrerla,en el caso para nuestro ejemplo el documento XML del procesador tendrá la siguente estructura:
    <serv> <ip>ip</ip> <uri>uri </uri> <date>date</date> </serv>
    var _ip = vari.getElementsByTagName('ip').item().firstChild.data;
    var _uri = vari.getElementsByTagName('uri').item().firstChild.data;
    var _date = vari.getElementsByTagName('date').item().firstChild.data;

    Entonces mostraremos: window.alert(_ip+"\n"+_uri+"\n"+_date)
    Hagamos el ejemplo1 con responseXML
    Ejemplo 1-b
    cliente
    PHP [inicio]
    1. <script language="javascript"  type="text/javascript">
    2. funcion encargada de crear el objeto
    3. function objetus() {
    4. try {
    5. objetus = new ActiveXObject("Msxml2.XMLHTTP");
    6. } catch (e) {
    7. try {
    8. objetus= new ActiveXObject("Microsoft.XMLHTTP");
    9. } catch (E) {
    10. objetus= false;
    11. }
    12. }
    13. if (!objetus && typeof XMLHttpRequest!='undefined') {
    14. objetus = new XMLHttpRequest();
    15. }
    16. return objetus
    17. }
    18. la funcion que hará el trabajo sucio
    19. esta funcion es la que llamamos en el evento ONCLICK de nuestro boton
    20. function primer_tope()
    21. {
    22. creamos el objeto
    23. _objetus=objetus()
    24. cargamos una varible con las variables que vamos a enviar
    25. _values_send="funcion=pt"
    26. _URL_="proceso.php?"
    27. _objetus.open("GET",_URL_+"&"+_values_send,true);
    28. una vez enviado los valores inmediatamente llamamos a la propiedad
    29. onreadystatechange
    30. _objetus.onreadystatechange=function() {
    31. dentro de la funcion comprobamos el estado del proceso
    32. si es 4 (terminado) pedimos lo que nos han mandado
    33. if (_objetus.readyState
      4)
    34. {
    35. si se da un status 200 (TERMINADO CON EXITO)
    36. if(_objetus.status 200)
    37. {
    38. usamos la propiedad responseText para recibir en una cadena
    39. lo que nos mandaron
    40. window.alert(_objetus.responseText);
    41. }
    42. }
    43. }
    44. obligatorio .... luego explicarè el porque
    45. _objetus.send(null);
    46. }
    47. function primer_topeXML()
    48. {
    49. _objetus=monitor_get_xmlhttp()
    50. _values_send="funcion=ptxml"
    51. _URL_="ajax_tut.php?"
    52. _objetus.open("GET",_URL_+"&"+_values_send,true);
    53. _objetus.overrideMimeType("text/xml");
    54. _objetus.onreadystatechange=function() {
    55. if (_objetus.readyState
      4)
    56. {
    57. if(_objetus.status 200)
    58. {
    59. var vari=_objetus.responseXML;
    60. var _ip = vari.getElementsByTagName('ip').item().firstChild.data;
    61. var _uri = vari.getElementsByTagName('uri').item().firstChild.data;
    62. var _date = vari.getElementsByTagName('date').item().firstChild.data;
    63. window.alert(_ip+"\n"+_uri+"\n"+_date);
    64. }
    65. }
    66. }
    67. _objetus.send(null);
    68. return
    69. }
    70. </script>
    71. <input type="button" name="visual" value="Pedir datos con rexponseText" class="boton" onclick="primer_tope();">
    72. <input type="button" name="visual" value="Pedir datos con rexponseXML" class="boton" onclick="primer_topeXML();">
    73. <!-- mas documento HTML -->
PHP [fin]
procesador
PHP [inicio]
    1. <?php
    2. if(isset($_GET['funcion']))
    3. {
    4. $_valor=$_GET['funcion'];
    5. if($_valor
      "pt")
    6. {
    7. $_pt="Tu ip: ".htmlspecialchars($_SERVER['REMOTE_ADDR'])."\n";
    8. $_pt.="request_uri: ".htmlspecialchars($_SERVER['REQUEST_URI'])."\n";
    9. $_pt.="date(): ".htmlspecialchars(date("d-m-Y : H-i-s"))."\n";
    10. echo $_pt;
    11. }
    12. elseif ($_valor "ptxml")
    13. {
    14. $_xml="<?xml version=\"1.0\" standalone=\"yes\"?>\n";
    15. $_xml.="<serv>\n";
    16. $_xml.="<ip>Tu ip: ".htmlspecialchars($_SERVER['REMOTE_ADDR'])."</ip>\n";
    17. $_xml.="<uri>request_uri: ".htmlspecialchars($_SERVER['REQUEST_URI'])."</uri>\n";
    18. $_xml.="<date>date(): ".htmlspecialchars(date("d-m-Y : H-i-s"))."</date>\n";
    19. $_xml.="</serv>\n";
    20. mandamemos cabeceras identificando al documento
    21. como un documento XML
    22. header('Content-Type: text/xml');
    23. echo $_xml;
    24. }
    25. else
    26. {
    27. echo "No enviaste ningun valor ACEPTABLE";
    28. }
    29. }
    30. else
    31. {
    32. echo "No se a enviado valor alguno de peticion";
    33. }
    34. ?>
PHP [fin]
[editar]

54 opiniones

Tutorial de AJAX

5-5
fdmfbd

hushdg
voy a probarlo

nose pq nadie opina
er

er
asdfas

sdfg
1 2 3 4 5 6 7 ... 11 | siguiente >

Tutoriales relacionados con 'Tutorial de AJAX (Asynchronous JavaScript + XML)'

Entiendase que AJAX no se refiere a usar el objeto XMLHttpRequest de manera indispensable porque... Más »

Autor y licencia de 'Tutorial de AJAX (Asynchronous JavaScript + XML)'


Tutorial de Mononeurona. Extraido de: http://www.mononeurona.org/index.php?idp=547 CopyLeft
Este trabajo está licenciado bajo la Creative Commons License. 1999-2005 © :: MonoNeurona.org ::
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.