AJAX请求callback使用jQuery
我是使用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”感兴趣,因此我的问题是: 什么是最好的方式来确切地指定我想要返回的数据?
我有一些想法:
- 把所有的HTML包装在一个if语句中(例如,如果$ num isset,不输出html;否则输出HTML),但是我回应HTML,我宁愿不这样做。
- 设置一个单独的PHP脚本来接收我的AJAX调用:这就是我最初做的,它工作得很好。 但是,我有兴趣将所有内容都放在一个文件中,并希望探索可能的方法。
我相信有一个优雅的方式来做到这一点。 感谢您的任何build议!
优雅的方式将是有一个单独的(!)PHP文件,将只输出number times 2
当前PHP的number times 2
部分。 然后,从当前的PHP生成一个AJAX请求到新的单独的PHP。
我相信这个post回答了你所看到的一个方面 – 在你的警报框中的整个页面的回声。
接下来,以下是获取AJAX基础知识的一些好post:
一个简单的例子
更复杂的例子
根据下拉列表中的选项填充下拉菜单2
你可以添加die();
如果你真的想保持在同一页面上,你回声号码后。 这将终止脚本的执行。 不要忘记在if语句中添加括号:
if (isset($num)) { echo $num['number'] * 2; die(); }
但是,这不是最优雅的解决scheme。
注 *更好的方法是把这样的东西保存在一个单独的文件中,使得它更容易阅读和更容易理解,特别是如果你使用一个好的命名转换。
这是一个不好的程序方法,但我在这里:):
<?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 } ?>