繁体   English   中英

在Javascript中读取PHP返回的JSON

[英]Read JSON returned by PHP in Javascript

我想从数据库中选择一些内容并将其返回到javascript。 数据库返回了几行。 如果我打印出来的话,我用JSON尝试了这个并得到了结果。 但是如果我想转换JSON字符串,则总会出现以下错误消息。 (在JSON.parse)所以,我假设在填充数组时可能出错了? 先谢谢你们!

使用Javascript:

 $.ajax({ url: "./select_firsttracks.php", type: "post", success: function(resultset) { $("#erroroutput").html(resultset); var arr = JSON.parse("{" + resultset + "}"); // --> "Uncaught SyntaxError: Unexpected token {" }, error: function(output) { $("#erroroutput").html("fatal error while fetching tracks from db: " + output); } }); 

PHP:

$storage = array();
while($row = $result->fetch_array())
{
    $storage[] = 
        array
        (
            "id" => $row["id"],
            "trackname" => $row["trackname"],
            "artist" => $row["artist"],
            "genre" => $row["genre"],
            "url" => $row["url"],
            "musicovideo" => $row["musicovideo"]
        );

    echo json_encode($storage);
}

控制台上的输出:

[{"id":"1","trackname":"yes","artist":"Lady Gaga","genre":"Pop","url":"ftp:\/development","musicovideo":"1"}][{"id":"1","trackname":"yes","artist":"Lady Gaga","genre":"Pop","url":"ftp:\/development","musicovideo":"1"},{"id":"2","trackname":"no","artist":"Prinz Pi","genre":"Rap","url":"ftp:\/development","musicovideo":"1"}]

过了一会儿就回应了json

$storage = array();
while($row = $result->fetch_array())
{
    $storage[] = 
        array
        (
            "id" => $row["id"],
            "trackname" => $row["trackname"],
            "artist" => $row["artist"],
            "genre" => $row["genre"],
            "url" => $row["url"],
            "musicovideo" => $row["musicovideo"]
        );


}
echo json_encode($storage);

并改变:

 var arr = JSON.parse(resultset);

您在收到的JSON前后添加花括号,在这里:

var arr = JSON.parse("{" + resultset + "}");

Phps json_encode返回完全有效的JSON。 尝试不添加大括号:

var arr = JSON.parse(resultset);

生成的json字符串无效,您可以使用jsonlint进行检查

修改你的PHP代码,以echo外循环:

while($row = $result->fetch_array())
{
    $storage[] = 
        array
        (
            "id" => $row["id"],
            "trackname" => $row["trackname"],
            "artist" => $row["artist"],
            "genre" => $row["genre"],
            "url" => $row["url"],
            "musicovideo" => $row["musicovideo"]
        );


}
echo json_encode($storage);

在javascript中只需将输出用作javascript对象

success: function(resultset) {
    console.log(resultset)
    resultset.each(function(index,element){ console.log(index,element )})
  },

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM