【问题标题】:echo php variable inside jQuery function在jQuery函数中回显php变量
【发布时间】:2013-07-13 10:42:07
【问题描述】:

我在 joomla 2.5 模板文件中设置了这个 PHP 变量

$datestart = date('Y-m-d g:i', strtotime("+1 week"));
$dateend = date('Y-m-d g:i', strtotime("+30 days"));

当我回应这个

<?php echo json_encode($datestart); ?> 

在一个 php 页面中它可以工作。我正在尝试将此变量包含在 RS Form 组件的 jQuery 函数中

$formLayout .= "\n".'<script type="text/javascript" src="'.JURI::root(true).'/components/com_rsform/assets/calbs.js"></script>'."\n";

在我的 .js 文件中

jQuery(function() {
jQuery("#datetimepicker").datetimepicker({
format: "dd MM yyyy - HH:ii P",
showMeridian: true,
autoclose: true,
startDate: <?php echo json_encode($datestart); ?>,
endDate: <?php echo json_encode($dateend); ?>,
minuteStep: 15,
pickerPosition: "bottom-left"

});
 });

但它不起作用并显示 php echo 行的语法错误。我该如何解决这个问题?

【问题讨论】:

  • 在js文件中不能输入php代码
  • 显示什么错误?
  • 如果您的 JavaScript 文件没有被 PHP 处理,那么 &lt;?php ... ?&gt; 将不会被替换。因此语法错误。

标签: php jquery joomla


【解决方案1】:

您必须先将 php 值分配给 .php 文件中的 js 变量

<script>
START_Date='<?php echo json_encode($datestart); ?>';
END_Date='<?php echo json_encode($dateend); ?>';

</script>

现在在你的 js 文件中

jQuery(function() {
    jQuery("#datetimepicker").datetimepicker({
        format: "dd MM yyyy - HH:ii P",
        showMeridian: true,
        autoclose: true,
        startDate: START_Date,
        endDate: END_Date,
        minuteStep: 15,
        pickerPosition: "bottom-left"

    });
 });

或者在你的 php 文件中包含你的 js 代码,然后你可以像这样在你的 js 中直接使用 php 变量:

jQuery(function() {
    jQuery("#datetimepicker").datetimepicker({
        format: "dd MM yyyy - HH:ii P",
        showMeridian: true,
        autoclose: true,
        startDate: '<?php echo json_encode($datestart); ?>',
        endDate: '<?php echo json_encode($dateend); ?>',
        minuteStep: 15,
        pickerPosition: "bottom-left"

    });
});

【讨论】:

    【解决方案2】:

    您好,您不能在 js 文件中使用 php 代码。 将值存储在 javascript 变量中,然后在 jquery 函数中使用此变量。

    【讨论】:

      【解决方案3】:

      您可以简单地将此值存储到隐藏字段中,然后通过其 id 值将其获取到 .js 文件中。

      【讨论】:

        【解决方案4】:

        试试这个代码

        <input type="hidden" id="startdate" value="<?php echo json_encode($datestart); ?>"/>
        <input type="hidden" id="enddate" value="<?php echo json_encode($dateend); ?>"/>
        
        
        
        jQuery(function() {
        var start = jQuery("#startdate").val();
        var end= jQuery("#enddate").val();
         jQuery("#datetimepicker").datetimepicker({
          format: "dd MM yyyy - HH:ii P",
          showMeridian: true,
          autoclose: true,
          startDate: start,
          endDate: end,
          minuteStep: 15,
          pickerPosition: "bottom-left"
        });
        });
        

        【讨论】:

          【解决方案5】:
          you should do it this way:
          <?php
          
          $datestart = date('Y-m-d g:i', strtotime("+1 week"));
          $dateend = date('Y-m-d g:i', strtotime("+30 days"));
          
          ?>
          
           <input id="datestart" type="hidden" name="datestart" value="<?php echo $datestart; ?>">
            <input id="dateend" type="hidden" name="dateend" value="<?php echo $dateend; ?>">
          
            <script>
                var datestart = document.getElementById('datestart').value;
                 var dateend = document.getElementById('dateend').value;
          
                jQuery(function() {
          jQuery("#datetimepicker").datetimepicker({
          format: "dd MM yyyy - HH:ii P",
          showMeridian: true,
          autoclose: true,
          startDate: datestart,
          endDate: dateend,
          minuteStep: 15,
          pickerPosition: "bottom-left"
          
          });
           });
            </script>    
          

          【讨论】:

          • 这个方法也有效,但我不想包含隐藏的输入类型
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-05-29
          • 1970-01-01
          • 2017-12-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多