我正在尝试从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);发布于 2013-09-18 21:38:56
因为您没有另外指定,所以PHP将声明它正在输出一个HTML文档,并且jQuery将把JSON当作HTML来处理。
在从PHP输出任何东西之前,添加header("Content-Type: application/json");。
其次,JSON文本由单个对象组成,而不是对象数组。
data[0].username应仅为data.username
发布于 2013-09-18 21:45:25
首先,您对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();发布于 2013-09-18 21:44:16
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) {
...
}
}
);https://stackoverflow.com/questions/18873720
复制相似问题