在同一页面上用PHP读取javascript cookie

时间:2015-02-04 19:08:59

标签: javascript php html cookies

我有一个页面,return.php。它有一行HTML如下:

<td><a href="#" dataP="<?= $partNumber[$x] ?>" onclick="popup(this)"><?= substr($avgCost[0],0,6) ?></a></td>

onclick,这会调用以下弹出函数:

function popup(windowname) {  
  document.cookie = 'popupPartNumber='+windowname.getAttribute("dataP")+'; expires=Wed, 1 Jan 2070 13:47:11 UTC; path=/'
  var x = document.cookie;
  console.log(x);    
  windowname = 'popUpDiv';
  blanket_size(windowname);
    window_pos(windowname);
    toggle('blanket');
    toggle(windowname);

}

在同一页面上,这会加载:

<div id="blanket" style="display:none;"></div>
  <div id="popUpDiv" style="display:none;"">
  <a href="#"" onclick="popup(this)"><img src="/img/close.png"></a>
<?php
  $popupPartNumber  = $_COOKIE['popupPartNumber'];
  echo "<pre>";
  echo htmlentities($_COOKIE['popupPartNumber'], 3, 'UTF-8');
  echo "</pre>";
?>

</div>

当我开始这个并点击HTML链接时,我得到一个console.log输出,上面写着:

PHPSESSID=cvbt1gvisul27nccenaeum1hh0; popupPartNumber=123456789

但我的php echo输出显示:null

为什么我在javascript中正确设置的cookie不能用于php?

更新

我改变return.php说:

$popupPartNumber = $_POST['popupPartNumber']; //part number line
  echo "<pre>"; 
  echo "value is: " . $popupPartNumber ;
  echo "</pre>";

我将脚本更改为:

var x = windowname.getAttribute("dataP");

  $.ajax({
      type: 'POST',
      url: 'return.php',
      data: {popupPartNumber:x},        
        success:function(data){
          alert(data);
          }
        });

console.log(x); //outputs the correct number.

这不起作用......我仍然没有得到php变量的值。

1 个答案:

答案 0 :(得分:0)

您的PHP代码在服务器上生成HTML代码,读取cookie并将html传递给浏览器。因此,那些cookie在服务器上不存在。在浏览器上,您正在设置Cookie。因此,在浏览器上设置这些cookie之后,请对服务器执行ajax调用,然后您应该能够在服务器上读取这些cookie。