PHP json_encode到AJAX,未定义

时间:2015-04-21 14:07:06

标签: javascript php jquery mysql ajax

我是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);

?>

我在这里遗漏了什么吗?提前谢谢!

3 个答案:

答案 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:""},{}..]