Cookies Javascript/PHP

Cookies Javascript/PHP,javascript,php,cookies,Javascript,Php,Cookies,我在一个新闻提要(比如Facebook)中制作了喜欢/不喜欢按钮。我想在有人使用PHP单击其中一个按钮时更改数据库。我首先在一个表单中创建了这两个按钮,但是PHP将在另一个页面上运行,并重新加载第一个页面,从而使您返回到新闻提要的顶部(这当然不应该发生)。然后我尝试了Javascript,但我需要将文章的id从Javascript传递到PHP。我试着用饼干做这个: document.cookie=和$\u cookie[] function like(id) { document.coo

我在一个新闻提要(比如Facebook)中制作了喜欢/不喜欢按钮。我想在有人使用PHP单击其中一个按钮时更改数据库。我首先在一个表单中创建了这两个按钮,但是PHP将在另一个页面上运行,并重新加载第一个页面,从而使您返回到新闻提要的顶部(这当然不应该发生)。然后我尝试了Javascript,但我需要将文章的id从Javascript传递到PHP。我试着用饼干做这个:

document.cookie=
$\u cookie[]

function like(id) {
    document.cookie="lid="+id;
    <?php query("INSERT INTO `likes`(`uid`, `pid`) VALUES (".$_SESSION['id'] . ",".$_COOKIE['lid'].")"); ?>
}
function dislike(id) {
    document.cookie="lid="+id;
    <?php query("DELETE FROM `likes` WHERE uid=".$_SESSION['id'] . " AND pid=".$_COOKIE['lid']); ?>
}
类函数(id){
document.cookie=“lid=”+id;
}
函数(id){
document.cookie=“lid=”+id;
}
这不起作用,所以我添加了一些警报以了解发生了什么

function like(id) {
    <?php $_COOKIE['lid'] = "10"; ?>
    alert("Like:" + id);
    document.cookie="lid="+id;
    <?php query("INSERT INTO `likes`(`uid`, `pid`) VALUES (".$_SESSION['id'] . ",".$_COOKIE['lid'].")"); ?>
    alert("<?php echo $_COOKIE['lid']; ?>");
}
function dislike(id) {
    <?php $_COOKIE['lid'] = "10"; ?>
    alert("Dislike:" + id);
    document.cookie="lid="+id;
    <?php query("DELETE FROM `likes` WHERE uid=".$_SESSION['id'] . " AND pid=".$_COOKIE['lid']); ?>
    alert("<?php echo $_COOKIE['lid']; ?>");
}
类函数(id){
警报(“如:+id”);
document.cookie=“lid=”+id;
警报(“”);
}
函数(id){
警惕(“不喜欢:+id”);
document.cookie=“lid=”+id;
警报(“”);
}
第一个警报显示正确的id,但第二个警报显示“10”

我做错了什么

如何将id从JavaScript传输到PHP

当有人点击一个按钮而不让新闻提要返回顶部时,还有其他好的方法来运行PHP代码吗


谢谢,Javascript不会运行PHP

所发生的事情是在将页面发送给用户之前运行PHP代码

在解释PHP之后

以前

function dislike(id) {
    <?php $_COOKIE['lid'] = "10"; ?>
    alert("Dislike:" + id);
    document.cookie="lid="+id;
    <?php query("DELETE FROM `likes` WHERE uid=".$_SESSION['id'] . " AND pid=".$_COOKIE['lid']); ?>
    alert("<?php echo $_COOKIE['lid']; ?>");
}
因此,当用户看到页面时,代码
已经运行,因此类似的内容被删除

您需要使用户正确地执行此操作

function dislike(id){
    var XHR = new XMLHttpRequest();
    XHR.addEventListener("load", function(){
        //was disliked
    })
    XHR.open("get", "dislike.php?id="+id);
    XHR.send();
}
类似于javascript的内容

php

<?php
parse_str($SERVER["QUERY_STRING"], $arr);
if(isset($arr["id"]){
 query("DELETE FROM `likes` WHERE uid=".$_SESSION['id'] . " AND pid=".$arr["id"]);
}

它不工作了。什么也没发生。我不明白:
XHR.addEventListener(“load”,function(){//was disliked})
这是服务器返回时运行的回调。什么都没有发生……代码不工作。请帮忙
<?php
parse_str($SERVER["QUERY_STRING"], $arr);
if(isset($arr["id"]){
 query("DELETE FROM `likes` WHERE uid=".$_SESSION['id'] . " AND pid=".$arr["id"]);
}