Я новичок в использовании jQuery для обработки AJAX и написал базовый сценарий, чтобы ослабить основы. В настоящее время я отправляю запрос AJAX в тот же файл, и я хочу сделать некоторую дополнительную обработку на основе результатов этого вызова AJAX.
Вот мой код:
**/*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>
Вот ответ, который я получаю, если я отправлю номер «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>
Очевидно, что меня интересует только получение и использование номера «4», поэтому мой вопрос: что лучше всего указать, какие именно данные я хочу вернуть?
Некоторые мысли, которые у меня были:
Я уверен, что есть элегантный способ сделать это. Спасибо за любые предложения!
Элегантным способом было бы иметь отдельный (!) PHP-файл, который будет выводить только number times 2
части вашего текущего PHP. Затем вы создаете запрос AJAX с вашего текущего PHP на новый отдельный PHP.
Я верю, что этот пост отвечает на один из аспектов того, что вы видите, – эхо всей страницы в окне оповещения.
Далее, вот несколько хороших сообщений для получения основ AJAX:
Простой пример
Более сложный пример
Population dropdown 2 на основе выбора в выпадающем списке 1
Вы можете добавить die();
после того, как вы эхо-номер, если вы действительно хотите сохранить его на одной странице. Это прекратит выполнение скрипта. Не забудьте добавить скобки вокруг оператора if:
if (isset($num)) { echo $num['number'] * 2; die(); }
Это, однако, не самое элегантное решение.
ПРИМЕЧАНИЕ. * Лучший подход заключается в том, чтобы сохранить подобные вещи в отдельном файле, упростить чтение и упростить понимание, особенно если вы используете хорошее преобразование имен.
Это плохой процедурный подход, но я иду :):
<?php $num = $_POST['json']; if (isset($num)) echo ($num['number'] * 2); die(); ?>
или еще лучше:
<?php $num = $_POST['json']; if (isset($num)) die($num['number'] * 2); //In case of error you could put them in brackets ?>
PS В качестве альтернативы die();
вы можете использовать exit();
, они оба делают почти то же самое: прекращение дальнейшего исполнения
Я не знаю, насколько это эффективно, но вы можете сделать что-то вроде:
<?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 } ?>