[英]JavaScript: Decode a PHP json_encode response
例如,我对数组进行json_encoding
并输出:
$key = $this->key;
$sql = "SELECT * FROM Requests";
$result = $this->db->query($sql);
$temp = array();
foreach($result as $r)
{
if($r['key'] == $key){
array_push($temp, array(
'song' => $r['song'],
'artist' => $r['artist'],
'by' => $r['by']
));
}
}
$this->encoded = json_encode($temp);
echo $this->encoded;
然后,我向它发送一个GET
请求:
$.get('http://www.example.com/file.php')
.done(function(data){
alert(data['artist']);
});
但是,此警报:
未定义
有人可以帮我吗? 我已经搜索了很多并尝试了很多,但是似乎没有任何效果(例如JSON.Parse
)。
编辑:我试图添加header('Content-Type: application/json');
但这给我留下了这个错误:
TypeError:数据为空
提前致谢!
$.get('http://www.syncsapi.x10host.com/API/Public/', { start: 'example' }) $.get('http://www.syncsapi.x10host.com/API/Public/', { display: '5' }) .done(function(data) { console.log(data[0]); }); });
<meta content="text/html;charset=utf-8" http-equiv="Content-Type"> <meta content="utf-8" http-equiv="encoding"> <script src="//code.jquery.com/jquery-1.12.0.min.js"></script> <script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
因此,脚本的问题在于,您基本上会发出以下内容:
[
{
"song" : "...",
"artist" : "..."
}
]
但是您的JavaScript代码期望这样的事情:
{
"song" : "...",
"artist" : "..."
}
如果您打算只为该PHP服务发回一首歌曲,则应修改PHP服务以删除顶级数组。
但是,如果您打算发回多首歌曲,则返回的数据很有意义,而JavaScript却没有。 要修复您的JavaScript,您可以更改以下内容:
alert(data['artist']);
成:
alert(data[0].artist);
请注意, .artist
和['artist']
是相同的,我样本中的真正区别是我添加了[0]
,它抓住了顶层数组中的第一项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.