【问题标题】:How do i make my php variable accessible?如何使我的 php 变量可访问?
【发布时间】:2015-07-26 22:27:49
【问题描述】:

我正在尝试实现一个计时器。我从 SO 帖子中学到了这个想法。

<?php

  if(($_SERVER['REQUEST_METHOD'] === 'POST') && !empty($_POST['username']))
  {
    //secondsDiff is declared here
    $remainingDay     = floor($secondsDiff/60/60/24);
  }
?>

这是我的 php 代码。我的 php、html 和 JS 代码在同一个页面中。我的 html 中有一个按钮。当用户点击html页面时,会调用一个Ajax函数

                        //url:"onlinetest.php",
                        //dataType: 'json',
                        beforeSend: function()
                        {
                            $(".startMyTest").off('click');
                            setCountDown();
                        }

它会调用 setCountDown() 方法,该方法在开头包含一行

     var days = <?php echo $remainingDay; ?>; 

当我运行该页面时,它在上面的行中显示[甚至在单击按钮之前]"expected expression, got '&lt;'"。我的疑问是

为什么这个 php 变量在我触发按钮之前被替换。请让我知道如何解决这个问题或如何改变我的想法。

【问题讨论】:

  • 看来您需要将文件重命名为 something.php
  • 是的,我的文件名为 testOnlineTest.php
  • 如果您的 var days = ... 行位于外部 javascript 文件中,这将不起作用,因为它不会通过 php 解析器运行。
  • php 在 server 上运行,then 生成的 html 和 javascript 被发送到客户端浏览器。然后浏览器呈现 html 并运行 javascript; php 已经完成,实际上 gone,在浏览器处理页面时不再“在页面中”。
  • @PatrickEvans 我已经提到所有脚本都在同一个文件中

标签: javascript php jquery html ajax


【解决方案1】:

问题是,由于初始加载,$_POST 值未填充(首次加载时为空),

你设置的那个变量是未定义的,只要确保你初始化了那个变量。

<?php
// initialize
$remainingDay = 1;
if(($_SERVER['REQUEST_METHOD'] === 'POST') && !empty($_POST['username']))
{
    //secondsDiff is declared here
    $remainingDay     = floor($secondsDiff/60/60/24);
    echo json_encode(array('remaining_day' => $remainingDay);
    exit;
}
?>

<script>
var days = <?php echo $remainingDay; ?>;
$('.your_button').on('click', function(){
    $.ajax({
        url: 'something.php',
        dataType: 'JSON',
        type: 'POST',
        beforeSend: function() {
            // whatever processes you need
        },
        success: function(response) {
            alert(response.remaining_day);
        }
    });
});
</script>

这只是基本思想,我只是为该特定示例添加了其他代码,只需添加/更改您需要的其余逻辑。

【讨论】:

  • 好的,谢谢。让我检查一下。
  • @GopsAB 只需使用document.URL 或根据需要硬编码网址。
  • @GopsAB 虽然我建议不要走这条路,但您的代码会很混乱,只需将实际处理您从 JS 发送的请求的 PHP 页面与响应分开即可你必须这样做。
  • @GopsAB 既然没有上下文可以进行更大规模的操作,这个var days = 需要什么,为什么不在JS 中初始化它呢?您是否真的需要来自 PHP 的值,您的代码(或几乎所有)是否总是使用这种方式? (在您的 JS 脚本和内容中回显 php 值)
【解决方案2】:

您可以将php 变量传递给JS 代码,如

var jsvariable ="<?php echo $phpvariable ?>";

注意:

如果您想将 php 的 json_encoded 值传递给 JS,您可以这样做

var jsonVariable = <?php echo $json_encoded_value ?>; //Note that there is no need for quotes here

【讨论】:

    【解决方案3】:

    试试这个,

    var days = "<?php echo $remainingDay; ?>";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-24
      • 1970-01-01
      • 2012-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多