我是使用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'感兴趣,因此我的问题是:确切指定我想要返回的数据的最佳方式是什么?
我有过一些想法:
我确信有一种优雅的方式来做到这一点。谢谢你的任何建议!
答案 0 :(得分:7)
优雅的方法是拥有一个单独的(!)PHP文件,该文件只输出当前PHP的number times 2
部分。然后,从当前的PHP生成一个AJAX请求到新的单独的PHP。
答案 1 :(得分:2)
我相信this post会回答您所看到的一个方面 - 整个页面在您的提醒框中回响。
接下来,这里有一些关于获取AJAX基础知识的好帖子:
答案 2 :(得分:1)
注意 *更好的方法是将此类内容保存在单独的文件中,使其更易于阅读并更易于理解,尤其是在您使用良好的命名转换时。
这是一个糟糕的程序方法,但我在这里:):
<?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();
,它们的表现几乎相同:终止进一步执行
答案 3 :(得分:1)
如果你真的想让它保持在同一个页面上,你可以在回显号码后添加die();
。这将终止脚本的执行。不要忘记在if语句周围添加括号:
if (isset($num)) {
echo $num['number'] * 2;
die();
}
然而,这不是最优雅的解决方案。
答案 4 :(得分:0)
我不知道这是多么有效,但你可以这样做:
<?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
}
?>