success requested parse mostrar manejo failed example errores error php jquery ajax

php - requested - mostrar error ajax jquery



Retrollamada de solicitud AJAX usando jQuery (5)

Soy nuevo en el uso de jQuery para manejar AJAX, y he escrito un script básico para obtener los fundamentos. Actualmente estoy PUBLICANDO una solicitud AJAX al mismo archivo, y deseo hacer un procesamiento adicional basado en los resultados de esa llamada AJAX.

Aquí está mi código:

**/*convertNum.php*/** $num = $_POST[''json'']; if (isset($num)) echo $num[''number''] * 2; ?> <!DOCTYPE html> <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <style type="text/css"> td {border:none;} </style> </head> <body> <table width="800" border="1"> <tr> <td align="center">Number To Send<br /><input type="text" id="numSend" size="40%" style="border:2px solid black;"></td> <td align="center">Number Returned<br /><input type="text" id="numReturn" size="40%" readonly></td> </tr> <tr><td align="center" colspan="4"><input type="button" value="Get Number" id="getNum" /></td></tr> </table> <script> $(document).ready(function () { $(''#getNum'').click(function () { var $numSent = $(''#numSend'').val(); var json = {"number":$numSent}; $.post("convertNum.php", {"json": json}).done(function (data) { alert(data); } ); }); }); </script> </body> </html>

Aquí está la respuesta que recibo si envío el número ''2'':

4 <!DOCTYPE html> <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <style type="text/css"> td {border:none;} </style> </head> <body> <table width="800" border="1"> <tr> <td align="center">Number To Send<br /><input type="text" id="numSend" size="40%" style="border:2px solid black;"></td> <td align="center">Number Returned<br /><input type="text" id="numReturn" size="40%" readonly></td> </tr> <tr><td align="center" colspan="4"><input type="button" value="Get Number" id="getNum" /></td></tr> </table> <script> $(document).ready(function () { $(''#getNum'').click(function () { var $numSent = $(''#numSend'').val(); var json = {"number":$numSent}; $.post("convertNum.php", {"json": json}).done(function (data) { alert(data); } ); }); }); </script> </body> </html>

Obviamente, solo estoy interesado en recibir y usar el número ''4'', de ahí mi pregunta: ¿Cuál es la mejor manera de especificar exactamente qué datos deseo devolver?

Algunos pensamientos que he tenido:

  • envolviendo todo mi HTML dentro de una sentencia if (es decir, si $ num isset, NO emite html; sino salida HTML) pero luego me hago eco de HTML, y prefiero no hacer eso.
  • Configurar un script PHP separado para recibir mi llamada AJAX: Eso fue lo que hice originalmente, y funciona muy bien. Sin embargo, estoy interesado en mantener todo dentro de un archivo, y quería explorar posibles formas de hacerlo.

Estoy seguro de que hay una manera elegante de hacer esto. Gracias por cualquier sugerencia!


La forma elegante sería tener un archivo PHP separado (!) Que solo generará el number times 2 partes de su PHP actual. Luego generas una solicitud AJAX desde tu PHP actual al nuevo PHP separado.


No sé qué tan eficiente es esto, pero puedes hacer algo como:

<?php /*convertNum.php*/ $num = isset($_POST[''json'']) ? $_POST[''json''] : NULL; //you have errors in this line if (!is_null($num)){ echo $num[''number''] * 2; exit(); //exit from script } ?>


Puede agregar die(); después de repetir el número si realmente desea mantenerlo en la misma página. Esto terminará la ejecución del script. No olvides agregar corchetes alrededor de la declaración if:

if (isset($num)) { echo $num[''number''] * 2; die(); }

Sin embargo, no es la solución más elegante.


NOTA * El mejor enfoque es mantener este tipo de cosas en un archivo separado, lo hace más fácil de leer y más fácil de entender, especialmente si usa una buena conversión de nombres.

Es un mal enfoque de procedimiento, pero aquí voy :):

<?php $num = $_POST[''json'']; if (isset($num)) echo ($num[''number''] * 2); die(); ?>

o mejor aún:

<?php $num = $_POST[''json'']; if (isset($num)) die($num[''number''] * 2); //In case of error you could put them in brackets ?>

PS Como alternativa para die(); puedes usar exit(); , ambos hacen más o menos lo mismo: terminar la ejecución adicional