我有一个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:
答案 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") } );
});