我是JSON的新手,我只是想知道为什么每次我尝试将结果作为JSON传递时,浏览器(Firefox)总是让我将其保存为本地文件?这是JSON的行为吗?我认为这就像传递XML一样,浏览器只会显示它。我正在使用PHP构建JSON:
header('Content-Type: application/json'); $json = "{\n"; $json .= " \"address\": \n"; $ctr = 0; $numrows = mysql_num_rows($result); while($row = mysql_fetch_array($result, MYSQL_ASSOC)){ $json .= " {\n"; $json .= " \"id\": \"". $row['id'] ."\",\n"; $json .= " \"lon\": \"". $row['lon'] ."\",\n"; $json .= " \"lat\": \"". $row['lat'] ."\",\n"; $json .= " \"road\": \"". $row['road'] ."\" \n"; $json .= " }"; $ctr++; $json .= ($ctr < $numrows) ? ",\n" : "\n" ; } $json .= "}"; echo $json;
答案 0 :(得分:6)
JSON当然不是XML。如果省略Content-type标头或将其设置为例如text / plain浏览器将呈现它。但是,当前的内容类型是正确的。安装JSONView extension以便能够在浏览器中查看json而不是获取下载窗口。
除此之外,永远不会使用字符串函数构建JSON 。 PHP有json_encode()
,它接受一个object / array / ..并返回一个有效的JSON字符串。所以你的代码应该是这样的:
header('Content-Type: application/json');
$rows = array();
while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
$rows[] = $row;
}
echo json_encode($rows);