【问题标题】:cookie and modal error with order of header being sent发送标头顺序的 cookie 和模式错误
【发布时间】:2017-02-03 11:28:21
【问题描述】:

我使用 JavaScript 创建一个弹出窗口(模式),警告人们我们在我们的网站上使用 cookie。 有一个接受按钮,单击该按钮应创建一个持续 60 天的 cookie,并阻止模式显示,但是当我单击该按钮时,我收到一条错误消息,提示我无法修改标题,因为它已经发送。

模态 JavaScript 取自 w3schools 并且可以运行,但我的浏览器出现错误“无法设置属性 'onclick' of null”。

代码如下:

<?php
  $cookie_name = "V3-cookies";

  if(!isset($_COOKIE[$cookie_name])) {
    include $_SERVER["DOCUMENT_ROOT"] . "/etc/cookie.php";
  } else {}
?>

这是/etc/cookie.php:

  <form id="modal" method="post" action="">
        <div class="modalconent tabs">
            <fieldset>
            <span class="close">×</span>
              <h2 class="fs-title">Cookies</h2>
              <h3 class="fs-subtitle">We use cookies to improve your experience</h3>
                 <iframe style="width:100%; height:80px;" src="/etc/txt/cookies.php" ></iframe><br />
               <input type="submit" name="cookie" value="Accept" class="btn fr" style="width:20%;" />
            </fieldset>
        </div>
    </form>
    <?php
      if(isset($_POST['cookie'])){
        $cookie_name = "V3-cookies";
        $cookie_value = "V3-cookies";
        setcookie($cookie_name, $cookie_value, time() + (86400 * 60)); // 86400 = 1 day
      }else{}
    ?>
    
    
    <script>
    window.onload = function () {
        document.getElementById('button').onclick = function () {
            document.getElementById('modal').style.display = "none"
        };
    };
    
    
    
    
    
    // Get the modal
    var modal = document.getElementById('modal');
    
    // Get the <span> element that closes the modal
    var span = document.getElementsByClassName("close")[0];
    
    // When the user clicks on <span> (x), close the modal
    span.onclick = function() {
        modal.style.display = "none";
    }
    
    // When the user clicks anywhere outside of the modal, close it
    window.onclick = function(event) {
        if (event.target == modal) {
            modal.style.display = "none";
        }
    }
    </script>

属性“onlick”为空的 JavaScript 错误在这里 (第二行)

   window.onload = function () {
        document.getElementById('button').onclick = function () {
            document.getElementById('modal').style.display = "none"
        };
    };

header php error 我不知道出了什么问题。

所以总共有 2 个问题。

  1. 如何修复 php 以在按钮单击时设置 cookie?
  2. 如何消除 onclick 为空的浏览器错误? (2. 没那么重要,只是我讨厌出错)

【问题讨论】:

  • 您需要重新组织您的 PHP 代码,使其在页面之前而不是在 HTML 中间发送 HTTP 标头。这与 JavaScript 无关。
  • 嗯,你有没有 ID 为 #button 的可点击元素?
  • @ravb79 不,javascript 取自 w3,我说它有效。但是我收到一个错误,真正的问题是 PHP,当按下接受按钮时我无法设置 cookie。
  • 您可以使用 a) JS cookie,b) AJAX 通过另一个 PHP 脚本设置 cookie,或者 c) 单击按钮后重新加载页面。

标签: javascript php jquery cookies


【解决方案1】:

我通过添加另一个设置 cookie 的页面解决了这个问题。所以 cookie.php 中的 &lt;form&gt; 将是 &lt;form actio="/etc/set_cookie.php" method="post"&gt; 并且在 set_cookie.php 中我使用与以前相同的 php 脚本。

我发布这个答案是为了让人们将来知道。

【讨论】:

    猜你喜欢
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-02
    • 2011-07-08
    相关资源
    最近更新 更多