json返回字符数组

时间:2018-05-03 01:29:07

标签: javascript php json

我是编码的新手,我遇到了json返回字符串字符数组的问题。每当我尝试迭代我的值时,它会将图像中的每个字符作为数组的索引读取。我想在数组中只有cat_name。对不起这样一个菜鸟问题。

我的结果是: List of what it's returning

我的code.js文件调用我的data.js文件中的函数将数据发送到function.php。

code.js:

function buildCat(){
var cats = data.getCategories();
var list = document.createElement("ul");
var test = cats.toString();
//console.log(JSON.stringify(cats));
//var cats = json_decode(

for(var i = 0; i < cats.length; i++){
    var catItem = document.createElement("li");
    var text = document.createTextNode(cats[i]);
    catItem.appendChild(text);
    catItem.addEventListener("click", function(event) { 
        var text = event.target.innerText;
    });
    list.appendChild(catItem);
}

document.body.appendChild(list);

}

data.js:

data = {
getCategories: function(){
    var req = new XMLHttpRequest();
    req.open('GET', 'functions.php?categories=true', false);
    req.send();
    //console.log(typeof(JSON.parse(req.responseText)));
    return JSON.parse(req.responseText);
}

};

的functions.php:

if(isset($_GET['categories'])){
$query = "SELECT cat_name FROM Categories;";
$stmt = $dbh->query($query);
$records = $stmt->fetchall();
$result = array();
foreach($records as $cat){
    array_push($result, $cat['cat_name']);
    //echo("<script>console.log('PHP: " .$result[0]."');</script>");
}

//header("Content-type: application/json");
echo json_encode(array_values($result));
//echo("<script>console.log('PHP: " .array_values($result)."');</script>");

}

1 个答案:

答案 0 :(得分:0)

我对你的functions.php做了一些小修改,所以我可以用我的数据库进行测试

<?php

// Connection variables
$host = "localhost"; // MySQL host name eg. localhost
$user = "root"; // MySQL user. eg. root ( if your on localserver)
$password = ""; // MySQL user password  (if password is not set for your root user then keep it empty )
$database = "test"; // MySQL Database name

// Connect to MySQL Database
$con = new mysqli($host, $user, $password, $database);

// Check connection
if ($con->connect_error) {
    die("Connection failed: " . $con->connect_error);
}

//if(isset($_GET['categories'])){
$query = "SELECT cat_name FROM Categories;";
$stmt = mysqli_query($con, $query);

$result = array();
while($cat = mysqli_fetch_assoc($stmt))
{
    array_push($result, $cat['cat_name']);
}

echo json_encode(array_values($result));
?>

这是我用来运行测试的html(我包括你所有的js)为了简单起见

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Untitled Document</title>
<script type="text/javascript" src="jquery-3.3.1.min.js"></script>
<script type="text/javascript">
data = {
    getCategories: function(){

        var req = new XMLHttpRequest();
        req.open('GET', 'functions.php?categories=true', false);
        req.send();

        return JSON.parse(req.responseText);
    }
}

function buildCat(){

var cats = data.getCategories();
var list = document.createElement("ul");
var test = cats.toString();

for(var i = 0; i < cats.length; i++){
    var catItem = document.createElement("li");
    var text = document.createTextNode(cats[i]);
    catItem.appendChild(text);
    catItem.addEventListener("click", function(event) {
        var text = event.target.innerText;
    });
    list.appendChild(catItem);
}

document.body.appendChild(list);
}
</script>
</head>

<body>

<button onclick="buildCat()">Click me</button>
</body>