Php 用JSON编码数据
我的新代码和更新的更改。插入数字后单击按钮对表单没有影响 前端Php 用JSON编码数据,php,jquery,ajax,database,forms,Php,Jquery,Ajax,Database,Forms,我的新代码和更新的更改。插入数字后单击按钮对表单没有影响 前端 $(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);
$(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 = $_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);
如果没有如Anower中正确说明的
obj.length
,obj.length
将是未定义的
,并且您正在调用响应对象obj
而不是数据
。您将从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指出的,您应该检查$\u GET['num']
,而不是$\u GET['id']
您还应该对SQL注入攻击提供更多保护。请至少使用以下内容转义您的输入:
$query = "SELECT * FROM Customers WHERE ID = '" . mysql_real_escape_string($id) . '"';
将
{num:id}
替换为{id: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" />
上面的代码和您的代码几乎相同,我可以通过单击go按钮填充值。您将在第10行收到此错误“未定义的索引错误->注意:未定义的索引:num in:*********\website\find.php”,因为您没有在查询中传递id。顺便说一句,我看不到查询的任何用途,所以我在我的json_action.php文件中删除了它。希望这将对您有所帮助。您好,我希望代码获取在所选记录中找到的数据,并使用它填充表单中的元素,即名为“fname”/“sname”/“age”的元素。当前,在浏览器开发工具中输入id时没有响应,也没有任何原因。@Matt该id的输出是我在后端php文件-->{“FirstName”:1,“姓氏”:2,“Age”:3}@Matt:It's find.php中指定的数组,与html文件位于同一目录中。开发人员工具在首页或php主页上都没有给我任何信息。我尝试了您的警报,并收到以下消息->未捕获类型错误:对象函数(a,b){返回新的e.fn.init(a,b,h)}没有方法“警报”。也许我用错了?我不熟悉“警惕”。有什么想法吗?@Kamal:这是我的一个表单字段->名字:
@Matt:当我通过浏览器运行find.php时,(即不带num=whates),我得到一个未定义的索引错误->注意:未定义的索引:num in*:*********************************\website\find.php在第10行{“FirstName”:1,“姓氏”:2,“年龄”:3}还包括提醒供您参考。我将用新的代码编辑我的问题,不幸的是仍然无法工作
$query = "SELECT * FROM Customers WHERE ID = '" . mysql_real_escape_string($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" />
$result = array('FirstName' => 1, 'Surname' => 2, 'Age' => 3);
echo json_encode($result);