我的新代码和更新的更改。插入数字后点击按钮对表单没有影响。
前端
$(document).ready(function(){
$("#go").click(function() {
var id=$("#myid").val();
$.getJSON('find.php',{num:id},function(obj){
alert(obj.toSource());
$("input.fname").val(obj.FirstName);
$("input.sname").val(obj.Surname);
$("input.age").val(obj.Age);
});
});
});
表单
ID: <input type="text" name="id" class="myid">
<input type="button" value="Go" id="go" />
First Name: <input type="text" name="FirstName" class="fname"><br>
Surname: <input type="text" name="Surname" class="sname"><br>
Age: <input type="text" name="Age" class="age"><br>
后端
$id = $_GET['num'];
$result = array('FirstName' => 1, 'Surname' => 2, 'Age' => 3);
echo json_encode($result);
obj.length
将是undefined
,并且您正在调用响应对象obj
而不是data
。你将从PHP中得到的是:;
{
"FirstName": 1,
"Surname": 2,
"Age": 3
}
为此,请将JS更新为:
// if (obj.length>0){ remove this
jQuery("input.fname").val(obj.FirstName);
jQuery("input.sname").val(obj.Surname);
jQuery("input.age").val(obj.Age);
// } and this...
请注意JavaScript的大小写敏感性。
此外,正如Nicola Peluchetti所指出的,您应该检查$_GET['num']
而不是$_GET['id']
。
您还应该对SQL注入攻击提供更多保护。至少使用mysql_real_escape_string
逃离输入:
$query = "SELECT * FROM Customers WHERE ID = '" . mysql_real_escape_string($id) . '"';
我想它在这里
$id = $_GET['num'];
而不是
$id = $_GET['id'];
因为您的查询字符串应该类似
find.php?num=3
结束,然后更好地查看您的代码,错误应该是
jQuery("input.fname").val(obj.FirstName);
jQuery("input.sname").val(obj.Surname);
jQuery("input.age").val(obj.Age);
没有obj.length
,如在另一个Transwer 中正确说明的
用{id:id}
替换{num:id}
用您的代码签出下面的代码。
<script type="text/javascript">
$(document).ready(function(){
$("#go").click(function() {
var id=$("#myid").val();
$.getJSON('http://localhost/test/test/json_action.php',{num:id},function(obj){
//alert(obj.toSource());
$("input.fname").val(obj.FirstName);
$("input.sname").val(obj.Surname);
$("input.age").val(obj.Age);
});
});
});
</script>
<input type="hidden" name="myid" id="myid" value="2" />
<input type="button" value="Go" id="go" />
<input type="text" class="fname" />
<input type="text" class="sname" />
<input type="text" class="age" />
json_action.php
$result = array('FirstName' => 1, 'Surname' => 2, 'Age' => 3);
echo json_encode($result);
上面的代码和您的代码几乎相同,我可以通过点击go按钮来填充值。您在第10行收到了此错误"一个未定义的索引错误->注意::*******.''website''find.php中的未定义索引:num",因为您没有在查询中传递id。顺便说一句,我看不到查询的任何用途,所以我在json_action.php文件中删除了它。希望这对你有帮助。