Firefox没有识别json数组返回,chrome确实如此

时间:2013-11-17 01:05:22

标签: javascript php json

我正在查询数据库并且查询成功。我创建一个数组,在其中我放置查询结果的值,然后我返回数组的json_encode。

     $i=0;
   while($row=$result->fetch()){
     $Invoices[$i]=Array("InvoiceNo"=>$row['InvoiceNo'],"InvoiceDate"=>$row['InvoiceDate'],"CompanyName"=>$row['CompanyName'],"GrossTotal"=>$row['GrossTotal']);
     $i++;
   }
    if($i==0)
    echo json_encode($empty_array);
   else
     echo json_encode($Invoices);

这适用于谷歌浏览器,我有json查看器,它格式正确,但在Firefox中它不显示为json。当我尝试解析它时,它不起作用。尝试使用$ .Ajax和$ .getJSON

1 个答案:

答案 0 :(得分:3)

您始终可以尝试使用header()调用设置内容类型,在输出之前将以下内容添加到页面顶部:

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

您还应该确保在实际的PHP代码之前没有任何空白区域,因为这也会在结果中发送,并且可能会干扰您的json响应。

在ajax调用中,您可以将dataType设置为json,如下所示:

$.ajax({
  url:"<example.com/index.php>",
  dataType:'json',
  success:function(e) {
     // e now should contain your json data
  }
);

请注意:

  

“json”:将响应评估为JSON并返回JavaScript对象。 JSON数据以严格的方式解析;任何格式错误的JSON都会被拒绝,并抛出一个解析错误。从jQuery 1.9开始,空响应也被拒绝;服务器应该返回null或{}的响应。 (有关正确的JSON格式的更多信息,请参阅json.org。)

jQuery.ajax