读取PHP在Javascript中返回的JSON

读取PHP在Javascript中返回的JSON,javascript,php,jquery,arrays,json,Javascript,Php,Jquery,Arrays,Json,我想从数据库中选择一些内容并将其返回到javascript。数据库返回了几行。我用JSON尝试了这个方法,如果我打印出来,也会得到一个结果。但是如果我想转换JSON字符串,下面总是有错误消息。在JSON.parse中,我假设填充数组时可能出错?提前谢谢各位 Javascript: $.ajax{ url://选择_firsttracks.php, 类型:post,, 成功:functionresultset{ $erroroutput.htmlresultset; var arr=JSON.p

我想从数据库中选择一些内容并将其返回到javascript。数据库返回了几行。我用JSON尝试了这个方法,如果我打印出来,也会得到一个结果。但是如果我想转换JSON字符串,下面总是有错误消息。在JSON.parse中,我假设填充数组时可能出错?提前谢谢各位

Javascript:

$.ajax{ url://选择_firsttracks.php, 类型:post,, 成功:functionresultset{ $erroroutput.htmlresultset; var arr=JSON.parse{+resultset+};/->未捕获的语法错误:意外的标记{ }, 错误:functionoutput{ $erroroutput.htmlfatal从数据库获取曲目时出错:+output; }
}在收到的JSON前后添加大括号,如下所示:

var arr = JSON.parse("{" + resultset + "}");
Phps json_encode本身返回完全有效的json。请在不添加大括号的情况下进行尝试:

var arr = JSON.parse(resultset);

在while之后回显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字符串无效,您可以使用

修改php代码以在循环外进行回音:

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 )})
  },

您的resultset已经是一个有效的JSON;添加大括号会使它变得不好。不需要在JSON.parse{+resultset+};代码:JSON.parseresultset;或在ajax配置中添加数据类型:“JSON”