AJAX调用返回json数组undefined

时间:2016-10-08 01:34:24

标签: javascript php jquery json ajax

我已经看到有很多关于这方面的问题,但我没有找到任何可以适用于我的案例的细节,所以如果我正在制作副本,对不起。

我正在尝试使用将数据传递给ajax调用的php文件从SQL数据库中检索数据。一切似乎工作正常,就在我尝试将数据输出到控制台时,我得到“未定义”变量,即使我尝试使用data.story访问数组的精确部分。我也尝试了数据[0] .story,但这给了我一个错误,即'story'字段未定义无法访问。 代码如下:

感谢您的帮助。

我的php文件:

<?php
$con = mysqli_connect('localhost','root','password','db');
if (!$con) {
die('Could not connect: ' . mysqli_error($con));
}
$array = array();
$sqlFetch = "SELECT s.storyTitle, s.story, s.lattitude, s.longitude,
u.nickname, u.platformUsed, u.sexuality, u.gender, u.age, s.category,
s.dateRecorded FROM stories AS s INNER JOIN users AS u ON u.email = s.email
WHERE s.postStatus != 'published'";
$result = mysqli_query($con,$sqlFetch);
if(!is_null($result->num_rows)){
$encode = array();
while($row = mysqli_fetch_assoc($result)) {
    $encode[] = $row;
}
echo json_encode($encode);  
}
?>

和ajax代码:

$.ajax({
        type: 'post',
        url: "http://localhost/wordpress/wp-content/themes/TinDA/js/loadData.php",
        dataType: 'json',
        data: "",


}).done(function(data){
    console.log(data);
//tried also: console.log(data.story); and data[0].story;


});

1 个答案:

答案 0 :(得分:1)

似乎你正在混合mysqli连接 带有面向对象风格的程序风格

程序:

$con = mysqli_connect('localhost','root','password','db');
$result = mysqli_query($con, "SOME SELECT STATEMENT");

while ($row = mysqli_fetch_assoc($result)){
    $data[] = $row;
}

$rows = mysqli_num_rows($result);
if($rows){
   json_encode(array('data' => $data, 'msg'=> 'successs'));
} else {
   json_encode(array('data' => $data, 'msg'=> 'error or no records...'));
}

OOP:

$con = new mysqli('localhost','root','password','db');
if($con->connect_errno){
    echo "WTF didn't work!!" . $con->connect_error;
}

$res = $con->query('SOME SELECT STMNT');
while ($row = $res->fetch_assoc()){
    $data[] = $row;
}

$rows = $con->num_rows;
if($rows){
    json_encode(array('data' => $data, 'msg'=> 'successs'));
}else {
    json_encode(array('data' => $data, 'msg'=> 'error or no records...'));
}

我也喜欢使用这个版本的ajax(与3.0不同可能不起作用)。 然后,您可以看到数据错误。注意,您可以成功调用ajax并返回但仍有错误。

$.ajax( '/http://localhost/...', {
    type: 'POST',
    dataType: 'json',
    success: function( json ) {
        console.log( json );
    },
    error: function( req, status, err ) {
        console.log( 'WTF!!', status, err );
    }
});