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 } ?>