我有一个页面,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变量的值。
答案 0 :(得分:0)
您的PHP代码在服务器上生成HTML代码,读取cookie并将html传递给浏览器。因此,那些cookie在服务器上不存在。在浏览器上,您正在设置Cookie。因此,在浏览器上设置这些cookie之后,请对服务器执行ajax调用,然后您应该能够在服务器上读取这些cookie。