我是AJAX的新手,我只是想通过AJAX将数据库结果从PHP显示到HTML。当我加载页面时,我在控制台日志上得到“未定义”。 HTML,PHP和JS文件是相互分离的。
这是我的JS代码:
$(document).ready(function(){
$.ajax({
type: "GET",
url: "xaja.php",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function(data){
console.log(""+data.name);
},
error: function(e){
alert("Error:\n"+e);
}
});
});
这是我的PHP代码:
<?php
$json = array(
'username' => '',
'name' => '',
'loc' => ''
);
$sql = "Select * from tbluser";
$query = mysql_query($sql, $conn);
$result = mysql_fetch_assoc($query);
do{
$json['username'] = $result['username'];
$json['name'] = $result['name'];
$json['loc'] = $result['location'];
echo json_encode($json);
$result = mysql_fetch_assoc($query);
}
while($result);
?>
我在这里遗漏了什么吗?提前谢谢!
答案 0 :(得分:3)
您正在输出多个json字符串。为了解析您的响应,它需要是一个单独的字符串。试试这个:
$results = array();
do{
$json['username'] = $result['username'];
$json['name'] = $result['name'];
$json['loc'] = $result['location'];
$results[] = $json;
$result = mysql_fetch_assoc($query);
}
while($result);
echo json_encode($results);
答案 1 :(得分:0)
为什么不采用传统方式?
$sql = "Select * from tbluser";
$query = mysql_query($sql, $conn);
if ($result = mysql_fetch_assoc($query) ) {
$json['username'] = $result['username'];
$json['name'] = $result['name'];
$json['loc'] = $result['location'];
echo json_encode($json);
}
或者如果你需要数组数组:
$json = array();
$sql = "Select * from tbluser";
$query = mysql_query($sql, $conn);
while ($result = mysql_fetch_assoc($query) ) {
$json[] = array($result['username'], $result['name'], $result['location']);
}
echo json_encode($json);
答案 2 :(得分:0)
当返回JSON时,它应该是一个单独的结构,而不是为每一行输出一个数组,你应该建立数组并输出一次。
$json = array();
do {
$json[]=$result;
$result = mysql_fetch_assoc($query);
} while($result);
echo json_encode($json);
将每行显示为命名结构([{username:"",name:"",location:""},{}..]
)