Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使smarty条件在javascript中工作?_Javascript_Php_Smarty - Fatal编程技术网

如何使smarty条件在javascript中工作?

如何使smarty条件在javascript中工作?,javascript,php,smarty,Javascript,Php,Smarty,我的JavaScript中有以下代码: <script> {literal} // Wait for document to be ready before doing JS / Jquery magic $(document).ready(function() { // Check if the status is allowed to become changed | If so disable status select

我的JavaScript中有以下代码:

<script>
    {literal}
        // Wait for document to be ready before doing JS / Jquery magic
        $(document).ready(function() {
        // Check if the status is allowed to become changed | If so disable status select and force ticket closure
        if(
            {/literal}'{$ticket.lock_date}'{literal} != null
            &&
            {/literal}'{$currentDate}'{literal} > {/literal}'{$ticket.lock_date}'{literal}
        ) {
            $('#status').attr("disabled", true);
            $('.select2project').attr("disabled", true);
            $('.select2lead').attr("disabled", true);
            $.ajax({
                type: 'GET',
                url: '/modules/support/ticketAutoclose.php?id='+'{/literal}{$ticket.id}{literal}'
            });
        }

        //more code down here
   {/literal}
</script>

{literal}
//等待文档准备就绪,然后再执行JS/Jquery魔术
$(文档).ready(函数(){
//检查状态是否允许更改|如果允许,请禁用状态选择并强制关闭票据
如果(
{/literal}{$ticket.lock_date}{literal}!=null
&&
{/literal}{$currentDate}{literal}>{/literal}{$ticket.lock_date}{literal}
) {
$('#status').attr(“disabled”,true);
$('.select2project').attr(“disabled”,true);
$('.select2lead').attr(“已禁用”,true);
$.ajax({
键入:“GET”,
url:'/modules/support/ticketutoclose.php?id='+'{/literal}{$ticket.id}{literal}'
});
}
//下面有更多代码
{/literal}
锁定日期时数据库中的字段为空。当我访问文档时,上面的代码会激活,即使我在第一次检查时特别运行了“!=NULL”


有人知道我做错了什么吗?这真的让我陷入了开发的困境。

Smarty是服务器端模板引擎-它在输出发送到浏览器之前工作。当你通过JS添加其语法关键字时,为时已晚。Smarty引擎永远不会读取和解释这一点。尝试将你的代码放入模板并传递一些标志在PHP中使用它。

修复了它!问题是JS将我的DB NULL值作为空字符串读取

<script>
  {literal}
    // Wait for document to be ready before doing JS / Jquery magic
    $(document).ready(function() {

        // Check if the status is allowed to become changed | If so disable status select and force ticket closure
        var lock_date = '{/literal}{$ticket.lock_date}{literal}';
        var currDate = '{/literal}{$currentDate}{literal}';
        var ticketID = '{/literal}{$ticket.id}{literal}';

        if(lock_date !== null && lock_date !== '' && currDate > lock_date) {
            $('#status').attr("disabled", true);
            $('.select2project').attr("disabled", true);
            $('.select2lead').attr("disabled", true);
            $('.editBtnLink').hide();
            $('.editBtnSave').hide();
            $.ajax({
                type: 'GET',
                url: '/modules/support/ticketAutoclose.php?id='+ticketID
            });
        }

    // Some more code

  {/literal}
</script>

{literal}
//等待文档准备就绪,然后再执行JS/Jquery魔术
$(文档).ready(函数(){
//检查状态是否允许更改|如果允许,请禁用状态选择并强制关闭票据
var lock_date='{/literal}{$ticket.lock_date}{literal}';
var currDate='{/literal}{$currentDate}{literal}';
var ticketID='{/literal}{$ticket.id}{literal}';
如果(锁定日期!==空和锁定日期!==''&&currDate>锁定日期){
$('#status').attr(“disabled”,true);
$('.select2project').attr(“disabled”,true);
$('.select2lead').attr(“已禁用”,true);
$('.editBtnLink').hide();
$('.editBtnSave').hide();
$.ajax({
键入:“GET”,
url:'/modules/support/ticketutoclose.php?id='+ticketID
});
}
//还有代码吗
{/literal}

所以你正在动态生成JS,对吗?你检查过这段代码生成的JS了吗?你能在这里发布吗?“如何让smarty条件在javascript中工作?”--smarty在服务器上处理文档,它不与javascript交互(但可用于构建JS脚本).JavaScript在Smarty完成其工作后很长一段时间在浏览器中运行。不清楚您想要实现什么。您可以关闭
if
行之前的
{literal}
块,使用Smarty变量编写
if
条件,然后启动另一个
{literal}
块。如果您正在使用Smarty 3(为什么要使用旧版本?)那么您根本不需要使用
{literal}
块。您所要做的就是确保大括号(
{
}
)被空格包围。这样Smarty将它们视为文字,而不是Smarty构造。@axiac我想实现的是,当您转到页面时,php if check要运行。它应该检查DB lock_date字段是否为NULL,如果它不为NULL+当前日期超过了锁定日期,则括号内的代码应该为现在代码总是运行的,即使DB字段为NULL。PHP不涉及这个问题。