在我的代码中,我返回一个php数组,其中包含7名学生的记录。使用jquery (),我希望在成功函数上打印这些记录。
DB表学生
+---------------------------+
| name | fathername | Email |
+---------------------------+submit.php
$query=mysql_query("SELECT * from Students LIMIT 0,6");
$row= array();
$row=mysql_fetch_array($query);
return json_encode($row);index.php
<script>
$(function(){
$("#form1").submit(function(event){
event.preventDefault();
$.ajax({
url:'submit.php',
type:'GET',
data:$(this).serialize(),
success:function(result){
$.each(result,function(){
$('.StudentName').text(result["name"]);
$('.FatherName').text(result["fathername"]);
$('.Email').text(result["email"]);
});
}
});
});
});
</script>
<div class="StudentName"></div>
<div class="FatherName"></div>
<div class="Email"></div>编辑i尝试只返回一个来自php的结果,它可以工作,即
echo json_encode(mysql_fetch_array($query));当我返回所有6个记录时,jquery函数不执行。
while($result=mysql_fetch_array($query))
{
echo json_encode($result);
}发布于 2014-04-11 13:05:42
PHP数组和js数组有区别,您不能简单地将PHP数组传递给您的javascript,所以您应该首先将其json_encode并发送到JS。
这将将PHP数组转换为JSON数组,例如:
array(3) {
[0]=>
string(3) "foo"
[2]=>
string(3) "baz"
[3]=>
string(5) "blong"
}至
string(33) "{"0":"foo","2":"baz","3":"blong"}"所以试着-
return json_encode($row);然后,当您捕获响应时,使用parseJSON
result = jQuery.parseJSON(result);
$.each(result,function(){
$('.StudentName').text(result.name);
$('.FatherName').text(result.fathername);
$('.Email').text(result.email);
});编辑:
另一件事,而不是return json_encode($row);写echo json_encode($row);
编辑2
(发送所有6份记录)
$final = array();
while($result=mysql_fetch_array($query))
{
array_push($final,$result);
}
echo $final;发布于 2014-04-11 13:19:35
函数成功(结果){$.each(结果,函数(){$(‘.StudentName’).text(结果“名称”);
看上去有问题。当您将result的所有内容分配给页面中相同的元素时,似乎并没有真正的理由来遍历这个页面。
但是,假设result是一个对象数组(就像SQL查询通常产生的那样),那么它应该是
function(result){
$.each(result,function(obj) {
// missing parameter!!! ^^^
$('.StudentName').text(obj["name"]);
// access that here: ^^^还可以执行一个console.log(result),或者简单地浏览请求URL来检查PHP脚本是否产生预期的响应。
发布于 2014-04-11 13:39:15
下面是一个解析JSON的示例,可以帮助您- http://jsfiddle.net/Su6QR/
考虑到这个例子,更改AJAX函数-
$.ajax({
url:'submit.php',
type:'GET',
data:$(this).serialize(),
success:function(result){
var members = $.parseJSON(result);
$.each(members, function() {
var newStudent = '<span>' + this['name'] + '</span>';
var newFather = '<span>' + this['father'] + '</span>';
var newEmail = '<span>' + this['email'] + '</span>';
$('.StudentName').append(newStudent);
$('.FatherName').append(newFather);
$('.Email').append(newEmail);
});
}
});这将返回所有数据,并将它们放置到您创建的div中。格式将不是您想要的,但是您应该能够很容易地修复它。
https://stackoverflow.com/questions/23013370
复制相似问题