我正在尝试从PHP页面获取JSON,但总是收到'undefined'。
我的jQuery代码是:
<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代码是:
<?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代码中。 我刚刚添加了
data = $.parseJSON(data);
前
$("#div_lista_partecipanti").html(data.username);
答案 0 :(得分:3)
由于您没有另行指定,因此PHP会声称它正在输出HTML文档,而jQuery会将JSON视为HTML。
在从PHP输出任何内容之前添加header("Content-Type: application/json");
。
其次,您的JSON文本由单个对象组成,而不是对象数组。
data[0].username
应该只是data.username
答案 1 :(得分:1)
首先你对mysql注入非常开放,你应该使用mysqli或pdo预备语句。
其次你不应该在循环中回显JSON,它不能像那样工作,你需要将所有数据添加到数组然后json_encode
它并在循环后返回它,尽管对于你例如,它只是一个项目,但仍然。
<?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();
答案 2 :(得分:-1)
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) {
...
}
}
);