2014-02-13 45 views
0

我有這種情況,我加載了一些JavaScript,也包含一些PHP代碼。該網站不是由我設計的,所以我不知道爲什麼開發者會選擇這種方式。加載.js.php文件爲javascript無法正常工作

我必須加載一個名爲functions.js.php文件並加載腳本是這樣的:

<script type='text/javascript' src='http://www.somewebsite.com/wp-content/themes/theme/js/functions.js.php?ver=1.0'></script> 

腳本是確定的工作到一個WordPress更新到最新版本和一系列插件。

我想通了,因爲控制檯日誌中說,這就是問題所在:

Uncaught SyntaxError: Unexpected token < functions.js.php:1 

顯然在腳本中的第一行是一些PHP代碼。

另外點擊腳本URL將只下載文件而不是將其視爲php代碼。

謝謝你的時間。

更新#1

PHP的不能分離從JS邏輯容易,因爲它包含的代碼部分像這樣的

 <?php if ($dynamic_header) { ?> 
      $headerIsDynamic = true; 
     <?php } else { ?> 
      $headerIsDynamic = false; 
     <?php } ?> 

全文檔代碼是可用的此鏈接http://pastebin.com/VkQZwg43

更新#2

腳本通過的functions.php加載這樣

wp_register_script('functions', get_template_directory_uri() . '/js/functions.js.php', 'jquery', '1.0', TRUE); 
+1

你可以張貼functions.js.php的代碼? – anurupr

+0

@anurupr - 請參閱更新以獲取完整代碼 – Mike

+0

您是否曾嘗試單獨運行腳本,並查看它是否正確輸出js?是src屬性中的鏈接是實際的鏈接還是它是一個虛擬鏈接? – anurupr

回答

0

所以,一個很簡單的解決方案做了魔法,但我不知道到底爲什麼

我已經改名爲functions.js.phpfunc.php,也修改了的functions.php腳本加載正確命名腳本,它工作正常。

可能的原因:

WP wp_register_script並解析在最後一個版本的文件名和實際分析的加載文件作爲JS,而不是作爲一個PHP程序的結果。

如何複製

「filename.php」重命名你的PHP文件「filename.js.php」和使用* wp_register_script *加載該文件,並它會導致同樣的問題。

用於此版本可溼性粉劑是3.8.1

0

這個 「functions.js.php」 是一個PHP文件不是一個js文件,that's錯誤

你能否提取js文件之外的php邏輯?

+0

我知道js和php之間有什麼區別,並且我想到了您的解決方案,但該文件很亂並且充滿了php代碼。我會盡快更新帖子來查看。 – Mike

0

確保您的網絡服務器配置爲首先運行php文件;在Windows /阿帕奇結賬的情況下http://www.php.net/manual/en/install.windows.apache2.php

+0

該網站正常工作。實際上它在服務器上而不是Windows開發機器上。 – Mike

+0

然後向我們展示結果輸出,即您打電話時得到的內容:http://www.somewebsite.com/wp-content/themes/theme/js/functions.js.php?ver=1.0 –

+0

它不輸出什麼。它只是下載文件,好像沒有php支持。 – Mike