2017-01-04 15 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字符。