php爆炸不能在javascript模板中工作

时间:2012-09-05 15:30:47

标签: php javascript jquery json template-engine

我知道有些帖子已经涉及同一主题。

以下是链接:

Javascript Template Engine Use with jQuery

What is x-tmpl?

我正在尝试将php爆炸功能合并到javascript模板中。该插件是我从GitHub下载的blueimp @ https://github.com/blueimp/jQuery-File-Upload/downloads的jQuery-File-Upload。

以下是我的代码的一部分,我正在尝试执行并使其正常工作。

         <!-- The template to display files available for download -->
         <script id="template-download" type="text/x-tmpl">
         {% for (var i=0, file; file=o.files[i]; i++) { %}
             <tr>
                <td>
                     <?php echo "{%=file.name%}"; ?> //{%file.name%} contains a string seperated by underscores
                     <?php $file_name_long = '{%=file.name%}'; ?>
                     <?php $file_name = explode ('_' , $file_name_long); ?>
                     <?php print_r($file_name); ?>
                </td>
             </tr>
               ...
               ...

我可以将$ file_name打印为数组,但我无法通过 file.name 中的下划线将其分开。打印的数组包含 file.name

的整个字符串

我不确定这是否可行。我一整天都在努力。如果这不可行或逻辑上不正确,请告诉我,以便我可以停止尝试使这项工作。谢谢和赞赏。

2 个答案:

答案 0 :(得分:5)

你正试图在php代码中读取javascript值。

{%=file.name%}只是php的一个字符串,当你的php呈现输出时,它不包含任何实际的文件名。所以你的print_r()会输出{%=file.name%},然后在整个php处理完成后,它会在浏览器中被翻译成你的文件名。

尝试单独在javascript中实现这些东西。

答案 1 :(得分:2)

您正尝试在客户端(在js模板中)执行服务器端代码(php)。代码{%=file.name%}在您的PHP代码尝试执行时尚未被替换(因为它在服务器上)。

如果混合服务器端代码和客户端代码,您确实需要管理逻辑以考虑在客户端之前执行的服务器。