2017-01-04 12 views
0

我使用jQuery检索从端点BOM被添加到任何回报或死亡响应

die(json_encode(array('success' => 3, 'message' => 'You must use at least 1 credit or more.'))); 

JSON响应每当我为您在Chrome开发者工具,我得到一个红点收到的JSON响应在json响应之前显示了\ ufeff。我在Notepad ++中用UTF-8编码了PHP文件,但它仍然添加了任何响应的BOM字符。如果我返回任何东西或更换模具,它仍会在响应中显示BOM字符。

我已经尝试过我的本地主机上的同一个文件,它的工作原理绝对好,但在服务器上增加了字符。

我不知道是什么原因造成的问题,任何帮助将不胜感激。

+0

BOM中是否存在您的PHP文件?你可以检查这个例如由一个hexa文件查看器。或者,在向客户端发送响应时,HTTP服务器是否预先附加了BOM? – Matey

+0

我在不同的服务器上有类似的体验。添加一个'ob_clean' http://php.net/manual/en/function.ob-clean.php似乎解决了这个问题。 – mistapink

回答

1

这是一个13 year old issue

有解决方法(从所有PHP文件,ob_clean在脚本开始删除BOM),但真正的解决办法是有一个PHP编译--enable-zend-multibyte--enable-mbstring,或等待,直到它是固定的由PHP团队负责。

由于您有时无法控制托管环境中的PHP版本和编译标志,因此我宁愿从所有PHP文件中删除BOM以避免此类问题。这可以在任何服务器上运行。

你的解决方案是用JS修复输出。但对于其他用途,例如通过PHP生成图像或其他二进制数据,或发送标题,你不能这样解决。

0

看来这是服务器配置中的一个特殊问题,因为它在其他服务器上工作。与此同时,我在分析JSON响应之前过滤了响应以使用JavaScript删除任何BOM字符。