php – 在Firefox / Opera中JSON输出null,在Chrome中更正
注意:我不认为这是Drupal问题,所以我在这里发布它.
我们创建了一个应该返回JSON的Drupal模块.例如.调用/ foo / json返回JSON.这在Chrome中都很好.但是,Firefox只显示“null”. JSON的内容只是一个PHP数组,其中包含一些循环填充的信息 $someArray = array(); foreach(....) { $someArray[] = array("foo" => "bar",...); } echo json_encode($someArray); 到目前为止,我知道 >这不是编码问题.如果我只返回$someArray [0] [“some_key”]中的单个元素,Chrome会显示内容长度为5的“USA”,所以我确信没有一个非ASCII字符.但是,Firefox显示null,内容长度为4. 根据评论更新 > Content-type是带有正确编码信息的application / json.将其更改为text / html或其他内容不会改变任何内容.使用标题和Drupal函数来设置标题. Firefox与Firebug的响应标头 Cache-Control no-cache,must-revalidate,post-check=0,pre-check=0 Connection Keep-Alive Content-Language en Content-Length 4 Content-Type application/json; charset=utf-8 Date Mon,03 Sep 2012 12:16:58 GMT Etag "1346674618" Expires Sun,19 Nov 1978 05:00:00 GMT Keep-Alive timeout=5,max=100 Last-Modified Mon,03 Sep 2012 12:16:58 +0000 Server Apache/2.2.22 (Ubuntu) X-Powered-By PHP/5.3.10-1ubuntu3.2 请求标头 Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Encoding gzip,deflate Accept-Language en-us,en;q=0.7,de;q=0.3 Connection keep-alive Cookie has_js=1; respimg_ratio=1; respimg=1000 //Drupal information Host vie.local User-Agent Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0 TL; DR 解决方法
问题是Firefox不知何故没有向服务器发送正确的语言.我不知道是通过cookie还是在标题内.由于我对输出使用了语言感知过滤,因此从未返回输出.
因此,禁用语言过滤器可以解决问题.我不知道为什么Firefox有这个语言的问题,但这解决了这个问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |