Autor Tema: Ajax, PhP y JavaScript. Juego Adivina el número con xml y Json Código ejecutable  (Leído 19138 veces)

javaquery

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 125
    • Ver Perfil
Buenas tengo que hacer este ejercicio:

1   En un proyecto PHP en NetBeans de nombre DAW_M06_PHP, crea dentro una nueva carpeta de nombre de nombre DAW_M06_T6_NUMERO. Dentro crea un nuevo documento  HTML con el nombre “aciertaNumero.html” , un JavaScript  un PHP con el nombre “aciertaNumeroXML.php” que contendrá el código PHP adjunto, y un nuevo PHP aciertaNumeroJSON.php que deberás programar.

2   Programa en  “aciertaNumero.js” las funciones necesarias para que al clicar encima de #inicioXML:

2.1     se envíe una petición AJAX a aciertaNumeroXML.php con el parámetro: inicio=si


Aqui los codigos


CODIGO aciertaNumero.html


Código: [Seleccionar]
<body>
        <div id="inicioXML">INICIO XML</div>
        <div id="inicioJSON">INICIO JSON</div>
        <input type="text" id="numero" />
        <div id="checkAjaxXML"> CHECK AJAX XML</div>
        <div id="checkAjaxJSON"> CHECK AJAX JSON</div>
        <div id="encontrado"></div>
        <div id="mensaje"></div>
    </body>



CODIGO aciertaNumeroXML.php

Código: [Seleccionar]
<?php
session_start
();
@
header("Content-type: text/xml");
$xml '<?xml version="1.0" encoding="utf-8"?>
' . "\n";
$xml .= '<resp>' . "\n";  //inciamos el XML

if(isset($_GET['inicio'])){     //se ha indicado iniciar un nuevo juego
        $numeroAleatorio=rand(0,10);//seleccionamos un numero aleatorio entre 0 y 10
        $_SESSION['numeroOculto'] = $numeroAleatorio;
               
               
        $xml .= "<inicio>".$_SESSION['numeroOculto']."</inicio>" . "\n";//retornamos el numero generado
}else{
    $numeroUsuario = $_GET['numero'];
    $numeroOculto=$_SESSION['numeroOculto'];
   
    if($numeroUsuario > $numeroOculto ){
        $xml .= "<encontrado>no</encontrado>" . "\n";
        $xml .= "<mensaje>Has introducido un valor demasiado alto"."s</mensaje>" . "\n";
    }else {
        if($numeroUsuario < $numeroOculto ){
            $xml .= "<encontrado>no</encontrado>" . "\n";
            $xml .= "<mensaje>Has introducido un valor demasiado bajo"."</mensaje>" . "\n";
        }else{
              $xml .= "<encontrado>si</encontrado>" . "\n";
            $xml .= "<mensaje>Exacto!</mensaje>" . "\n";
        }
       
    }
}
//finalizamos la estructura XML
$xml .= '</resp>' . "\n";

//insertamos la respuesta XML
echo($xml);
?>



Código que he hecho de aciertaNumero.js

Código: [Seleccionar]
function consultaAjax() {

    var xmlHttp = new XMLHttpRequest();
   
    var si = document.getElementById("inicioXML").value;

    var urlDestino = "aciertaNumeroXML.php?inicio="+si;
    xmlHttp.open("GET", urlDestino, true);

xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

xmlHttp.onreadystatechange = function(){
   
    if(xmlHttp.readyState ==4){
        funcionResp(xmlHttp);
    }
};

xmlHttp.send(null);
}

« Última modificación: 23 de Enero 2017, 21:47 por Ogramar »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Duda ejercicio
« Respuesta #1 en: 11 de Diciembre 2016, 02:18 »
Holq javimf.


Si tu duda es e punto 2.1, la siguiente línea debería quedar así:

Código: [Seleccionar]
var urlDestino = "aciertaNumeroXML.php?inicio=si";
Saludos.  ;D

javaquery

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 125
    • Ver Perfil
Re:Duda ejercicio
« Respuesta #2 en: 11 de Diciembre 2016, 12:55 »
Hola
Lo he probado pero en el inspector de cofigo me dice funcionResp is not defined, ¿esta funcion donde tengo que definirla?

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Duda ejercicio
« Respuesta #3 en: 11 de Diciembre 2016, 13:15 »
¿Podrías poner el enunciado entero?

Porque en realidad no se que pretendes que haga la función "funcionResp()".

En este condicional
Código: [Seleccionar]
[if(xmlHttp.readyState ==4){
        funcionResp(xmlHttp);
    }/code]

Deberías recoger aprovechar para coger la respuesta que te devuelva tu código php.

[code]contenidosRecibidos = xmlhttp.responseText;

y luego actuar con ella como creas conveniente, como te dije, si puedes aclarar mejor que se debe hacer con ella, será más fácil ayudarte, porque el enunciado solo dice que enviar por ajax, pero no que hacer con lo que podamos recibir.


Saludos. ;D
« Última modificación: 11 de Diciembre 2016, 13:23 por pedro,, »

javaquery

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 125
    • Ver Perfil
Re:Duda ejercicio
« Respuesta #4 en: 11 de Diciembre 2016, 13:24 »
Este es el enunciado entero del ejercicio, los ejercicios se dividen por partes por ejemplo  2  , 2.1 , 2.2 ..ect

1   En un proyecto PHP en NetBeans de nombre DAW_M06_PHP, crea dentro una nueva carpeta de nombre de nombre DAW_M06_T6_NUMERO. Dentro crea un nuevo documento  HTML con el nombre “aciertaNumero.html” , un JavaScript  un PHP con el nombre “aciertaNumeroXML.php” que contendrá el código PHP adjunto, y un nuevo PHP aciertaNumeroJSON.php que deberás programar.

2   Programa en  “aciertaNumero.js” las funciones necesarias para que al clicar encima de #inicioXML:
2.1     se envíe una petición AJAX a aciertaNumeroXML.php con el parámetro: inicio=si
2.2   extrae el número aleatório de la respuesta generada por PHP y muéstralo por consola.
2.3   Muestra un mensaje en el DIV #mensaje avisando que se ha generado un nuevo número.

3   Programa en  “aciertaNumero.js” las funciones necesarias para que al clicar encima de #checkAjaxXML:
3.1     se envíe una petición AJAX a aciertaNumeroXML.php con el parámetro: numero=valor introducido dentro del input #numero
3.2   extrae de la respuesta generada por PHP, si se ha encontrado el valor y el mensaje retornado por el servidor.
3.3   Muestra el mensaje en el DIV #mensaje y el valor de encontrado dentro del DIV #encontrado.



4   Crea un archivo de nombre aciertaNumeroJSON.php que realice las mismas funcioes que aciertaNumeroXML.php pero retornando una estructura JSON y añade las funciones  Javascript para realicar las consultas de inicio y check correspondientes. Es decir:
4.1    al clicar encima del DIV #inicioJSON se debe enviar una petición AJAX a aciertaNumeroJSON.php  para que genere un número aleatório y lo retorne dentro de una estructura JSON. Al recibir la respuesta se ha de mostrar el número por consola y mostrar un mensaje en #mensaje avisando que se ha generado un nuevo número.

4.2   Al clicar encima del DIV #checkAjaxJSON  se debe enviar una petición AJAX a aciertaNumeroJSON.php  recibiendo el valor del input  #numero para retornar en formato JSON  los parámetros “encontrado” y “mensaje” indicando si se ha encontrado y un mensaje que se deberán mostrar en los DIV #encontrado y #mensaje



5   Añade un marcador con un máximo de fallos que vaya modificándose cada vez que el usuario falle y muestre un mensaje si se han realizado todos los fallos o todos los aciertos. Para controlar los fallos puedes utilizar una variable global JavaScript.

 

Un saludo y gracias

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Duda ejercicio
« Respuesta #5 en: 11 de Diciembre 2016, 16:49 »
Para el punto 2, el código JavaScript quedaría de la siguiente forma:

Código: [Seleccionar]
window.onload = function() {
document.getElementById('inicioXML').addEventListener('click', consultaAjax);
}

function consultaAjax() {
var xmlHttp = new XMLHttpRequest();   
var urlDestino = "aciertaNumeroXML.php?inicio=si";
xmlHttp.onreadystatechange = function(){   
if(xmlHttp.readyState == 4 && xmlHttp.status == 200){
console.log(xmlHttp.responseText);
document.getElementById('mensaje').innerHTML = 'Se ha generado un nuevo número.';
}
};
xmlHttp.open("GET", urlDestino, true);
xmlHttp.send();
}

y si lo que quieres es que muestre por consola solo el número y no las etiquetas xml cambia el if por este:

Código: [Seleccionar]
if(xmlHttp.readyState == 4 && xmlHttp.status == 200){
var respuesta = xmlHttp.responseXML;
var numero = respuesta.getElementsByTagName('inicio')[0].textContent;
console.log(numero);
document.getElementById('mensaje').innerHTML = 'Se ha generado un nuevo número.';
}

El código del archivo aciertaNumeroXML.php es el que pusiste?, lo digo porque tiene algún error, además de que da igual de que envíes 'inicio=si' o igual a cualquier otro texto.

Saludos.
« Última modificación: 11 de Diciembre 2016, 17:20 por pedro,, »

javaquery

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 125
    • Ver Perfil
Re:Duda ejercicio
« Respuesta #6 en: 11 de Diciembre 2016, 17:48 »
He preguntado lo del codigo php que tiene errores aver que me dicen

un saludo :D

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Duda ejercicio
« Respuesta #7 en: 11 de Diciembre 2016, 18:15 »
Bueno, el único error era que faltaba una comilla en la cuarta línea después del "=".

Y ahora probando el código, veo que en el php lo único que importa es que exista "$_GET['inicio']" para poner en marcha el juego.

Así que no hagas mucho caso sobre mi comentario sobre el error, que te lo dije antes de probar el código.

Saludos. ;D

javaquery

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 125
    • Ver Perfil
Re:Duda ejercicio
« Respuesta #8 en: 11 de Diciembre 2016, 22:31 »
Me dijeron que el codigo en principio esta bien, otra cosa en el inspector me da un error
TypeError: document.getElementById(...) is null

Que tengo que hacer para que me muestre el numero introducido, porque en el inspector no lo veo, yo lo relleno y hago clic en INICIO XML, pero no me lo muestra

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Duda ejercicio
« Respuesta #9 en: 12 de Diciembre 2016, 00:25 »
Te dejo los códigos donde yo estoy haciendo las pruebas y me dices.

aciertaNumero.html
Código: [Seleccionar]
<html>
<head>
<title>Ejemplo aprenderaprogramar.com</title>
<meta charset="utf-8">
<script src="aciertaNumero.js"></script>
</head>

<body>
        <div id="inicioXML">INICIO XML</div>
        <div id="inicioJSON">INICIO JSON</div>
        <input type="text" id="numero" />
        <div id="checkAjaxXML"> CHECK AJAX XML</div>
        <div id="checkAjaxJSON"> CHECK AJAX JSON</div>
        <div id="encontrado"></div>
        <div id="mensaje"></div>
    </body>

</html>

aciertaNumero.js
Código: [Seleccionar]
window.onload = function() {
document.getElementById('inicioXML').addEventListener('click', consultaAjax);
document.getElementById('checkAjaxXML').addEventListener('click', checkAjaxXML);
}

function consultaAjax() {
var xmlHttp = new XMLHttpRequest();   
var urlDestino = "aciertaNumeroXML.php?inicio=hola";
xmlHttp.onreadystatechange = function(){   
if(xmlHttp.readyState == 4 && xmlHttp.status == 200){
var respuesta = xmlHttp.responseXML;
console.log(respuesta);
var numero = respuesta.getElementsByTagName('inicio')[0].textContent;
console.log(numero);
document.getElementById('mensaje').innerHTML = 'Se ha generado un nuevo número.';
}
};

xmlHttp.open("GET", urlDestino, true);
xmlHttp.send();
}

aciertaNumeroXML.php
Código: [Seleccionar]
<?php
session_start
();
@
header("Content-type: text/xml");
$xml '<?xml version="1.0" encoding="utf-8"?>
' . "\n";
$xml .= '<resp>' . "\n";  //inciamos el XML

if(isset($_GET['inicio'])){     //se ha indicado iniciar un nuevo juego
        $numeroAleatorio=rand(0,10);//seleccionamos un numero aleatorio entre 0 y 10
        $_SESSION['numeroOculto'] = $numeroAleatorio;
               
               
        $xml .= "<inicio>".$_SESSION['numeroOculto']."</inicio>" . "\n";//retornamos el numero generado
}else{
    $numeroUsuario = $_GET['numero'];
    $numeroOculto=$_SESSION['numeroOculto'];
   
    if($numeroUsuario > $numeroOculto ){
        $xml .= "<encontrado>no</encontrado>" . "\n";
        $xml .= "<mensaje>Has introducido un valor demasiado alto"."s</mensaje>" . "\n";
    }else {
        if($numeroUsuario < $numeroOculto ){
            $xml .= "<encontrado>no</encontrado>" . "\n";
            $xml .= "<mensaje>Has introducido un valor demasiado bajo"."</mensaje>" . "\n";
        }else{
              $xml .= "<encontrado>si</encontrado>" . "\n";
            $xml .= "<mensaje>Exacto!</mensaje>" . "\n";
        }
       
    }
}
//finalizamos la estructura XML
$xml .= '</resp>' . "\n";

//insertamos la respuesta XML
echo($xml);
?>

javaquery

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 125
    • Ver Perfil
Re:Duda ejercicio
« Respuesta #10 en: 12 de Diciembre 2016, 11:05 »
Hola, luego lo miro cuando llegue a casa
 Un saludo

thanks ;D

javaquery

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 125
    • Ver Perfil
Re:Duda ejercicio
« Respuesta #11 en: 12 de Diciembre 2016, 19:45 »
Hola,  esta linea es la que me da error en el codigo.
document.getElementById('checkAjaxXML').addEventListener('click', checkAjaxXML);
Aunque logico ya que no esta definida la variable checkAjaxXML


El profesor dijo que el php esta bien y dijo esto:"Importante es que inicialmente se envíe la petición ajax con GET con el parámetro inicio=si, para que entre en el primer if del PHP, genere el número aleatorio y lo guarde en la variable de SESSION"

Mi HTML lo tengo asi , difiere con el tuyo en que esta la llamada a la funcion consultaAjax()
<body>
        <div>TODO write content</div>
        <div id="inicioXML" onclick="consultaAjax();">INICIO XML</div>
        <div id="inicioJSON">INICIO JSON</div>
        <input type="text" id="numero" />
        <div id="checkAjaxXML"> CHECK AJAX XML</div>
        <div id="checkAjaxJSON"> CHECK AJAX JSON</div>
        <div id="encontrado"></div>
        <div id="mensaje"></div>
    </body>
Entonces en principio el ejercicio 2 esta completo,¿no?

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Duda ejercicio
« Respuesta #12 en: 12 de Diciembre 2016, 20:33 »
El error, como dices es lógico al no coincidir los id.

Si prefieres usar el "onclick" directamente en el html, con que no uses el "window.onload" será suficiente.

El apartado 2 está completo.

javaquery

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 125
    • Ver Perfil
Re:Duda ejercicio
« Respuesta #13 en: 14 de Diciembre 2016, 23:51 »
Buenas
¿como seria el ejercicio 3?
un saludo ;D

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Duda ejercicio
« Respuesta #14 en: 15 de Diciembre 2016, 00:07 »
Lo intentaste?  :o

Lo tenía del otro día pero no se porqué se me olvido ponerlo en el código de javascript.
Te dejo la función que hay que añadir nada mas, y solo tienes que llamarla.

Código: [Seleccionar]
function checkAjaxXML() {
var xmlHttp = new XMLHttpRequest();   
var numPropuesto = document.getElementById('numero').value;
var urlDestino = 'aciertaNumeroXML.php?numero=' + numPropuesto;
xmlHttp.onreadystatechange = function(){   
if(xmlHttp.readyState == 4 && xmlHttp.status == 200){
var respuesta = xmlHttp.responseXML;
console.log(respuesta);
document.getElementById('encontrado').innerHTML = respuesta.querySelector('encontrado').textContent;
document.getElementById('mensaje').innerHTML = respuesta.querySelector('mensaje').textContent;
}
};

xmlHttp.open("GET", urlDestino, true);
xmlHttp.send();
}

Saludos. ;D

javaquery

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 125
    • Ver Perfil
Re:Ajax, PhP y JavasCript. Juego Adivina el número.
« Respuesta #15 en: 15 de Diciembre 2016, 00:39 »
tenia hecho el 3.1 pero el 3.2 no entendia muy bien que habia que hacer, voy a ver si me pongo con el 4, si tengo duda te pregunto.

Gracias

javaquery

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 125
    • Ver Perfil
Re:Ajax, PhP y JavasCript. Juego Adivina el número.
« Respuesta #16 en: 16 de Diciembre 2016, 12:35 »
Buenas
Estoy con el ejercicio 4, se supone que como pide una peticion AJAX a aciertaNumeroJSON.php  para que genere un numero aleatorio , esta parte ?es igual que la del primer ejercicio hasta antes de la funcion con if? y lo que dice que lo retorne dentro dentro de una estrcutura JSON, eso cambia.
Por ahora llevo esto hecho
Código: [Seleccionar]

window.onload = function () {
    document.getElementById("incioXML").addEventListener("click", consultaAjax);
    document.getElementById("checkAjaxXML").addEventListener('click', checkAjaxXML);
    document.getElementById("inicioJSON").addEventListener("click", inicioJSON);

}

function inicioJSON(){
   
    var xmlHttp= new XMLHttpRequest();
    var urlDestino = "aciertaNumeroJSON.php)";
   

estoy viendo los apuntes y no entiendo muy bien lo de recibir la respuesta en formato JSON
un saludo

« Última modificación: 16 de Diciembre 2016, 13:39 por pedro,, »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Ajax, PhP y JavasCript. Juego Adivina el número.
« Respuesta #17 en: 16 de Diciembre 2016, 13:45 »
Hola javimf

Yo lo que entiendo en el punto 4 es que necesitas un nuevo archivo php que haga lo mismo que aciertaNumeroXML.php, pero en este caso en vez de devolver algo en formato XML lo devuelva en formato JSON.

Podrías aprovechar el mismo código de aciertaNumeroXML.php para aciertaNumeroJSON.php y la parte final en vez de devolver el contnido de la variable $xml dejarlo así:
Código: [Seleccionar]
$xml = str_replace(array("\n", "\r", "\t"), '', $xml); 
  $xml = trim(str_replace('"', "'", $xml));
  $simpleXml = simplexml_load_string($xml);

echo(json_encode($simpleXml));


Luego la parte ajax sería muy parecida a la usada en el anterior punto del ejercicio, pero cuando recojas los datos de la consulta, tendrás que usar responseText en vez de responseXML.

Prueba y nos cuenta.

Saludos. ;D

javaquery

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 125
    • Ver Perfil
Re:Ajax, PhP y JavasCript. Juego Adivina el número.
« Respuesta #18 en: 16 de Diciembre 2016, 19:59 »
En el js he hecho esto,  he hecho lo mismo que en el anterior cambiando por el responseText
Código: [Seleccionar]
function inicioJSON() {

    var xmlHttp = new XMLHttpRequest();
    var numPropuesto = document.getElementById('numero').value;
    var urlDestino = 'aciertaNumeroJSON.php?numero =' + numPropuesto;
    xmlHttp.onreadystatechange = function () {

        if (xmlHttp.readyState === 4 && xmlHttp.status === 200) {

            var respuesta = xmlHttp.responseText;
            console.log(respuesta);
            document.getElementById('mensaje').innerHTML = "Se ha generado un nuevo numero";
        }

    };

    xmlHttp.open("GET", urlDestino, true);
    xmlHttp.send();
}


Cuando me dices que aproveche el codigo de aciertaNumeroXML.php para el aciertaNumeroJSON.php  y que cambie solo la parte final que devuelve la variable xml , aque parte te refieres
este es el codigo de aciertaNumeroXML.php
Código: [Seleccionar]
<?php

session_start
();
@
header("Content-type: text/xml");
$xml '<?xml version="1.0" encoding="utf-8"?>
' . "\n";
$xml .= '<resp>' . "\n";  //inciamos el XML

if(isset($_GET['inicio'])){     //se ha indicado iniciar un nuevo juego
        $numeroAleatorio=rand(0,10);//seleccionamos un numero aleatorio entre 0 y 10
        $_SESSION['numeroOculto'] = $numeroAleatorio;
               
               
        $xml .= "<inicio>".$_SESSION['numeroOculto']."</inicio>" . "\n";//retornamos el numero generado
}else{
    $numeroUsuario = $_GET['numero'];
    $numeroOculto=$_SESSION['numeroOculto'];
   
    if($numeroUsuario > $numeroOculto ){
        $xml .= "<encontrado>no</encontrado>" . "\n";
        $xml .= "<mensaje>Has introducido un valor demasiado alto"."s</mensaje>" . "\n";
    }else {
        if($numeroUsuario < $numeroOculto ){
            $xml .= "<encontrado>no</encontrado>" . "\n";
            $xml .= "<mensaje>Has introducido un valor demasiado bajo"."</mensaje>" . "\n";
        }else{
              $xml .= "<encontrado>si</encontrado>" . "\n";
            $xml .= "<mensaje>Exacto!</mensaje>" . "\n";
        }
       
    }
}
//finalizamos la estructura XML
$xml .= '</resp>' . "\n";

//insertamos la respuesta XML
echo($xml);
?>


pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Ajax, PhP y JavasCript. Juego Adivina el número.
« Respuesta #19 en: 16 de Diciembre 2016, 20:33 »
El archivo aciertaNumeroJSON.php quedaría así:
Código: [Seleccionar]
<?php
session_start
();
@
header("Content-type: text/xml");
$xml '<?xml version="1.0" encoding="utf-8"?>
' . "\n";
$xml .= '<resp>' . "\n";  //inciamos el XML

if(isset($_GET['inicio'])){     //se ha indicado iniciar un nuevo juego
        $numeroAleatorio=rand(0,10);//seleccionamos un numero aleatorio entre 0 y 10
        $_SESSION['numeroOculto'] = $numeroAleatorio;
               
               
        $xml .= "<inicio>".$_SESSION['numeroOculto']."</inicio>" . "\n";//retornamos el numero generado
}else{
    $numeroUsuario = $_GET['numero'];
    $numeroOculto=$_SESSION['numeroOculto'];
   
    if($numeroUsuario > $numeroOculto ){
        $xml .= "<encontrado>no</encontrado>" . "\n";
        $xml .= "<mensaje>Has introducido un valor demasiado alto"."s</mensaje>" . "\n";
    }else {
        if($numeroUsuario < $numeroOculto ){
            $xml .= "<encontrado>no</encontrado>" . "\n";
            $xml .= "<mensaje>Has introducido un valor demasiado bajo"."</mensaje>" . "\n";
        }else{
              $xml .= "<encontrado>si</encontrado>" . "\n";
            $xml .= "<mensaje>Exacto!</mensaje>" . "\n";
        }
       
    }
}
//finalizamos la estructura XML
  $xml .= '</resp>' . "\n";
  $xml = str_replace(array("\n", "\r", "\t"), '', $xml);    // removes newlines, returns and tabs
  $xml = trim(str_replace('"', "'", $xml)); // cambia comillas dobles por comillas simples si las hubiese
  $simpleXml = simplexml_load_string($xml); // crea un objeto xml de un string

echo(json_encode($simpleXml)); // crea un string con formato JSON
?>

Y en la función inicioJSON, al recibir un string de este estilo:
Código: [Seleccionar]
'{"inicio":"9"}'Lo mejor a mi gusto es convertirlo en un objeto JSON con la siguiente línea:
Código: [Seleccionar]
var obj = JSON.parse(respuesta);Y después mostrar su contenido por consola como en el ejercicio anterior, de la siguiente forma:
Código: [Seleccionar]
console.log("El número aleatorio que devuelve la consulta es: ", obj.inicio);
la función quedaría así:
Código: [Seleccionar]
function inicioJSON() {
var xmlHttp = new XMLHttpRequest();   
var urlDestino = "aciertaNumeroJSON.php?inicio=hola";
xmlHttp.onreadystatechange = function(){   
if(xmlHttp.readyState == 4 && xmlHttp.status == 200){
var respuesta = xmlHttp.responseText;
console.log(respuesta, typeof respuesta);
var obj = JSON.parse(respuesta);
console.log(obj, typeof obj);
console.log("El número aleatorio que devuelve la consulta es: ", obj.inicio);
document.getElementById('mensaje').innerHTML = "Se ha generado un nuevo numero";
}
};
        xmlHttp.open("GET", urlDestino, true);
xmlHttp.send();
}

 ;D

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".