使用jQuery / AJAX在用户点击事件上运行php脚本

时间:2014-10-15 12:48:43

标签: javascript php jquery ajax

我有一个php脚本,我需要在用户点击按钮时使用jQuery / AJAX运行。我有一个jQuery脚本,应该在用户单击按钮时触发。但是,事件实际上并未触发。任何人都可以帮助我吗?

instructor.php

<div id="instructor">
    <?php
        echo "<img id=instructor_image src=" .$_SESSION["image"] .">";
        echo "<h1>" .$_SESSION["user"] ."</h1>";
        echo "<span><p>" .$_SESSION["program"] ."</p> - <h2>" .$_SESSION["role"] ."</h2></span>";
        echo "<a href=mailto:" .$_SESSION["email"] .">" .$_SESSION["email"] ."</a>";
    ?>
    <button class="button" name="logout" id="logout">Logout</button>
</div>

的script.js

$(document).ready(function(){
    $("#logout").on("click", function(){
        ajax = new XMLHttpRequest();
        ajax.open("../php/logout.php", "POST", true);
        ajax.send();
    })
})

logout.php

<?php
    require("../includes/header.php");

    $loggedout = "UPDATE `$user_table` SET `logged_in`=0 WHERE `user_id`='$user_id'";
    mysqli_query($connect, $loggedout);
    session_unset();
    session_destroy();
    mysqli_close($connect);
    header("Location: ../pages/logged_out.php");
?>

会话在标题中启动,是的,每个页面都会调用标题。我在ajax.open()行上也收到以下错误。 NS_ERROR_ILLEGAL_VALUE:

2 个答案:

答案 0 :(得分:1)

有些东西很奇怪 - header("Location: ../pages/logged_out.php");你想在用户点击后进行重定向吗?如果是这样你应该在你的js中做到这一点。

我会改变

$(document).ready(function(){
    $("#logout").on("click", function(){
        $.post("../php/logout.php",{},function(response){
            if(response.success == "1"){
                location.replace("../pages/logged_out.php");
            } else {
                //handle error
            }
        },'json');
    })
})

和php:

<?php
    ob_start();
    require("../includes/header.php");
    ob_clean();
    $loggedout = "UPDATE `$user_table` SET `logged_in`=0 WHERE `user_id`='$user_id'";
    mysqli_query($connect, $loggedout);
    session_unset();
    session_destroy();
    mysqli_close($connect);
    echo json_encode(array('success'=>1));
?>

答案 1 :(得分:0)

由于

ajax.open("../php/logout.php", "POST", true);

错了。它是.open(method, url, async)

void open(
   DOMString method,
   DOMString url,
   optional boolean async,
   optional DOMString user,
   optional DOMString password
);

所以将代码更改为

$("#logout").on("click", function(){
    ajax = new XMLHttpRequest();
    ajax.open("POST", "../php/logout.php", true);
    ajax.onreadystatechange = function () {
        if (xmlhttp.readyState==4) console.log("done");
    }
    ajax.send();
});

因为你正在使用jQuery,所以你可以做到

$("#logout").on("click", function(){
    $.post("../php/logout.php", function() { console.log("done") } );
});