【问题标题】:JSON Results offered to be savedJSON 结果提供保存
【发布时间】:2011-07-04 16:21:16
【问题描述】:

我是 JSON 新手,我只是想知道为什么每次我尝试将结果作为 JSON 传递时,浏览器 (Firefox) 总是让我将其保存为本地文件?这是 JSON 的行为吗?我认为这就像传递 XML 浏览器只会显示它一样。我正在使用 PHP 构建 JSON:

header('Content-Type: application/json'); $json = "{\n"; $json .= " \"地址\": \n"; $ctr = 0; $numrows = mysql_num_rows($result); 而($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

【问题讨论】:

    标签: php javascript json


    【解决方案1】:

    JSON 当然不是 XML。如果您省略 Content-type 标头或将其设置为例如text/plain 浏览器将呈现它。但是,当前的内容类型是正确的。安装 JSONView extension 以便能够在浏览器中看到 json 而不是下载窗口。

    除此之外,永远不要使用字符串函数构建 JSON。 PHP 有json_encode(),它接受一个对象/数组/.. 并返回一个有效的 JSON 字符串。所以你的代码应该是这样的:

    header('Content-Type: application/json');
    $rows = array();
    while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
        $rows[] = $row;
    }
    echo json_encode($rows);
    

    【讨论】:

    • 只包含公共字段。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-19
    • 2014-02-03
    • 1970-01-01
    • 2017-09-10
    • 1970-01-01
    相关资源
    最近更新 更多