首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jQuery通过Ajax返回JSON

问使用jQuery通过Ajax返回JSON
EN

Stack Overflow用户
提问于 2013-09-18 21:35:53
回答 3查看 143关注 0票数 1

我正在尝试从PHP页面获取JSON,但总是收到'undefined‘。

我的jQuery代码是:

代码语言:javascript
复制
<script>
    $(document).ready(function(){
        $("#lista_partecipanti").click(function(){
            $.post( "application/third_party/php_files/lista_partecipanti.php",
            { 
                user_id:<? echo $user_id; ?> , jam_id:<? echo $id_jam; ?>
            }, 
            function(data)
            {
                if(data) {
                    $("#div_lista_partecipanti").html('test' + data[0].username);
                }
                else
                {
                    alert("Error");                                     
                }
            });
        });
    });
</script>

我的PHP代码是:

代码语言:javascript
复制
<?php
include 'db_connect.php';

$a_id = $_POST['user_id'];
$b_id = $_POST['jam_id'];

$query = mysql_query("SELECT * FROM User a, Jam b WHERE a.id = b.owner AND a.id = $a_id AND b.id = $b_id");

if(mysql_num_rows() == 1) 
{
    $row = mysql_fetch_assoc($query);
    $data = array(
            'username' =>$row['username'],
            'user_id' => $row['id']
    );
    $data = json_encode($data);
    echo $data;    
}
else
    return false;

mysql_close();
?>

已解决

我解决了我的问题,这不是PHP的问题,但错误在jquery代码中。我刚添加了

代码语言:javascript
复制
data = $.parseJSON(data);

在此之前

代码语言:javascript
复制
$("#div_lista_partecipanti").html(data.username);
EN

回答 3

Stack Overflow用户

发布于 2013-09-18 21:38:56

因为您没有另外指定,所以PHP将声明它正在输出一个HTML文档,并且jQuery将把JSON当作HTML来处理。

在从PHP输出任何东西之前,添加header("Content-Type: application/json");。

其次,JSON文本由单个对象组成,而不是对象数组。

data[0].username应仅为data.username

票数 2
EN

Stack Overflow用户

发布于 2013-09-18 21:45:25

首先,您对mysql注入非常开放,您应该使用mysqli或pdo准备好的语句。

其次,您不应该在循环中回显JSON,它不是这样工作的,您需要将所有数据添加到一个数组中,然后对其执行json_encode操作,并在循环结束后返回它,尽管在您的示例中只有一项,但仍然是这样。

代码语言:javascript
复制
<?php
include 'db_connect.php';
header("Content-Type: application/json");

$a_id = $_POST['user_id'];
$b_id = $_POST['jam_id'];

$query = mysql_query("SELECT * FROM User a, Jam b WHERE a.id = b.owner AND a.id = $a_id AND b.id = $b_id");

if(mysql_num_rows() >= 1) {
    $data = array();
    while($row = mysql_fetch_assoc($query)){
        $data[] = array(
            'username' =>$row['username'],
            'user_id' => $row['id']
        );
    }
    echo json_encode($data);
} else {
    echo json_encode([]);
}
mysql_close();
票数 0
EN

Stack Overflow用户

发布于 2013-09-18 21:44:16

代码语言:javascript
复制
        jQuery.ajax({
            type: "POST",
            url: "application/third_party/php_files/lista_partecipanti.php",
            data: "userid="+<?php echo $user_id; ?>+"&jam_id="<?php echo $id_jam; ?>,
            cache: false,
            success: function(response) {
                    ... 
                }
            }
        );
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18873720

复制
相关文章

相似问题

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