1

我知道一些帖子已经在处理同一主题。

以下是链接:

与 jQuery 一起使用的 Javascript 模板引擎

什么是 x-tmpl?

我正在尝试将 php explode 函数合并到 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的整个字符串。

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

4

2 回答 2

5

您正在尝试读取 php 代码中的 javascript 值。

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

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

于 2012-09-05T15:41:00.123 回答
2

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

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

于 2012-09-05T15:40:24.993 回答