PHP 爆炸在 JavaScript 模板中不起作用


php explode not working in javascript template

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

以下是链接:

Javascript 模板引擎与 jQuery 一起使用

什么是 x-tmpl?

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

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

         <!-- 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

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

您正在尝试读取PHP代码中的JavaScript值。

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

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

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

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