我知道有些帖子已经涉及同一主题。
以下是链接:
Javascript Template Engine Use with jQuery
我正在尝试将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 。
的整个字符串我不确定这是否可行。我一整天都在努力。如果这不可行或逻辑上不正确,请告诉我,以便我可以停止尝试使这项工作。谢谢和赞赏。
答案 0 :(得分:5)
你正试图在php代码中读取javascript值。
{%=file.name%}
只是php的一个字符串,当你的php呈现输出时,它不包含任何实际的文件名。所以你的print_r()会输出{%=file.name%}
,然后在整个php处理完成后,它会在浏览器中被翻译成你的文件名。
尝试单独在javascript中实现这些东西。
答案 1 :(得分:2)
您正尝试在客户端(在js模板中)执行服务器端代码(php)。代码{%=file.name%}
在您的PHP代码尝试执行时尚未被替换(因为它在服务器上)。
如果混合服务器端代码和客户端代码,您确实需要管理逻辑以考虑在客户端之前执行的服务器。