PHP - 创建JSON但不显示标题

时间:2011-02-19 03:15:03

标签: php mysql json

我正在用PHP中的mySQL查询结果创建一个JSON字符串。但由于某种原因,当我将结果保存到文件进行健全性检查时,PHP“标题”函数不会附加任何内容。以下是代码:

        header("Content-Type: application/json");

    if(mysql_num_rows($result)){
            $dataResults = '{"Data":[';
            $first = true;
            $row = mysql_fetch_assoc($result);

            while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
                    if($first) {
                            $first = false;
                    } else {
                            $dataResults = $dataResults . ',';
                    }
                    $dataResults = $dataResults . json_encode($row);
            }
            $dataResults = $dataResults . ']}';
    } else {
            $dataResults = '[]';
    }

    file_put_contents('/Applications/MAMP/htdocs/PHP/results.json', $dataResults);

输出看起来是o.k.,除了缺少“Content-Type:application / json”。我做错了什么?

3 个答案:

答案 0 :(得分:3)

header将HTTP标头附加到Web服务器的HTTP响应中。它不会产生任何输出或向任何文件写入任何内容。文件没有HTTP头,它们是HTTP协议的一部分,HTTP协议是用于在Web服务器和浏览器之间进行通信的语言。

答案 1 :(得分:1)

为什么header()会向文件写入任何内容?

header()使用mod_php中的响应挂钩设置响应头信息,或者如果使用CGI则使用CGI等效设置。

文本文件不包含除编码之外的任何元信息(如果有)。

答案 2 :(得分:-3)

由于有几个人声明标题函数不会向文件写入任何内容,因此我会向您展示一些代码。

         $dom = new DOMDocument("1.0");
     $node = $dom->createElement("markers");
     $parnode = $dom->appendChild($node);

     header("Content-type: text/xml");


    //Iterate through the rows, adding XML nodes for each
     while ($row = @mysql_fetch_assoc($result)){
         $node = $dom->createElement("marker");
         $newnode = $parnode->appendChild($node);
         $newnode->setAttribute("name", $row['bName']);
         $newnode->setAttribute("address", $row['Street'].", ".$row['City']);
         $newnode->setAttribute("lat", $row['lat']);
         $newnode->setAttribute("lng", $row['lng']);
         $newnode->setAttribute("distance", $row['distance']);
         $newnode->setAttribute("Webpage", $row['Webpage']);
     }

     $dom->formatOutput = true;
     $dom->save("/Applications/MAMP/htdocs/PHP/DOM.xml");

该代码的输出产生如下文件:

<?xml version="1.0"?>
<markers>
<marker name="Lake House Diagnostic Program " address="123 S. Lake St., Aurora" lat="41.757786" lng="-88.321419" distance="0.000166859373254629" Webpage="http://www.auntmarthas.org/"/>
</markers>

因此,当我创建XML输出时,您会看到它将生成标题。