Javascript变量和聪明

Boa*_*rdy 8 javascript php smarty

我试图用smarty做一些javascript并使用javascript变量并检查该值是否包含在smarty数组中.

以下是我的代码

    if (object.data[i].Application === selectedApplication || {if isset($Applications) && $Applications|@count > 0} true {else} false {/if})
{
    {if not isset($Applications)}
       $("#cboApplications").append("<option selected value=\""+object.data[i].id+"\">"+object.data[i].Application+"</option>");
    {else}
       {if '9'|in_array:$Applications}
       console.log("id " + id + " in array");
       $("#cboApplications").append("<option selected value=\""+object.data[i].id+"\">"+object.data[i].Application+"</option>");
    {else}
       console.log("id " + id + " not in array");
       $("#cboApplications").append("<option value=\""+object.data[i].id+"\">"+object.data[i].Application+"</option>");
    {/if}
{/if}
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是{if '9'|in_array:$Applications}.目前我已经硬编码了值而不是使用javascript变量作为测试,但我得到了相同的结果.

下面是从smarty内部打印时阵列的样子

array (
  0 => '9',
)
Run Code Online (Sandbox Code Playgroud)

此列表框中有多个值,cboApplications其值为8,5,6,9和10.

出于某种原因,尽管$ Applications数组中只有9个,但是console.log就好像每个项目都在数组中,而不仅仅是9.

感谢您的任何帮助,您可以提供.

Ric*_*ard 3

您必须{literal}在 Smarty for JavaScript 中使用。例子:

{literal}
<script type="text/javascript">
    document.write("{/literal}{$text}{literal}");
</script>
{/literal}
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅Smarty 文档