首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jquery ()在使用每个()打印数组时发出

问jquery ()在使用每个()打印数组时发出
EN

Stack Overflow用户
提问于 2014-04-11 13:03:06
回答 4查看 282关注 0票数 0

在我的代码中,我返回一个php数组,其中包含7名学生的记录。使用jquery (),我希望在成功函数上打印这些记录。

DB表学生

代码语言:javascript
复制
+---------------------------+
| name | fathername | Email |
+---------------------------+

submit.php

代码语言:javascript
复制
$query=mysql_query("SELECT * from Students LIMIT 0,6");

   $row= array();
   $row=mysql_fetch_array($query);
   return json_encode($row);

index.php

代码语言:javascript
复制
<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的结果,它可以工作,即

代码语言:javascript
复制
echo json_encode(mysql_fetch_array($query));

当我返回所有6个记录时,jquery函数不执行。

代码语言:javascript
复制
while($result=mysql_fetch_array($query))
{
echo json_encode($result);
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-04-11 13:05:42

PHP数组和js数组有区别,您不能简单地将PHP数组传递给您的javascript,所以您应该首先将其json_encode并发送到JS。

这将将PHP数组转换为JSON数组,例如:

代码语言:javascript
复制
 array(3) {
  [0]=>
    string(3) "foo"
  [2]=>
   string(3) "baz"
  [3]=>
   string(5) "blong"
}

至

代码语言:javascript
复制
string(33) "{"0":"foo","2":"baz","3":"blong"}"

所以试着-

代码语言:javascript
复制
return json_encode($row);

然后,当您捕获响应时,使用parseJSON

代码语言:javascript
复制
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份记录)

代码语言:javascript
复制
$final = array();
while($result=mysql_fetch_array($query))
{
    array_push($final,$result);
}
echo $final;
票数 2
EN

Stack Overflow用户

发布于 2014-04-11 13:19:35

函数成功(结果){$.each(结果,函数(){$(‘.StudentName’).text(结果“名称”);

看上去有问题。当您将result的所有内容分配给页面中相同的元素时,似乎并没有真正的理由来遍历这个页面。

但是,假设result是一个对象数组(就像SQL查询通常产生的那样),那么它应该是

代码语言:javascript
复制
function(result){
    $.each(result,function(obj) {
//    missing parameter!!! ^^^
        $('.StudentName').text(obj["name"]);
//           access that here: ^^^

还可以执行一个console.log(result),或者简单地浏览请求URL来检查PHP脚本是否产生预期的响应。

票数 0
EN

Stack Overflow用户

发布于 2014-04-11 13:39:15

下面是一个解析JSON的示例,可以帮助您- http://jsfiddle.net/Su6QR/

考虑到这个例子,更改AJAX函数-

代码语言:javascript
复制
$.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中。格式将不是您想要的,但是您应该能够很容易地修复它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23013370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档