Javascript 使用jQuery/AJAX在用户单击事件上运行php脚本
我有一个php脚本,当用户单击按钮时,我需要使用jQuery/AJAX运行该脚本。我有一个jQuery脚本,应该在用户单击按钮时启动。然而,事件实际上并没有触发。有人能帮我吗 讲师.phpJavascript 使用jQuery/AJAX在用户单击事件上运行php脚本,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我有一个php脚本,当用户单击按钮时,我需要使用jQuery/AJAX运行该脚本。我有一个jQuery脚本,应该在用户单击按钮时启动。然而,事件实际上并没有触发。有人能帮我吗 讲师.php <div id="instructor"> <?php echo "<img id=instructor_image src=" .$_SESSION["image"] .">"; echo "<h1>" .$_SESSION[
<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>
<?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");
?>
logout.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>
<?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("../php/logout.php", "POST", true);
这是错误的。是的
因此,将代码更改为
$("#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") } );
});
有些东西很奇怪-
标题(“位置:../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));
?>
它被包装在一个dom就绪的函数中,这个事件是一个更大的js文件的一部分,我不认为包含整个脚本是一个好主意,但为了避免混淆,我将在这里的函数中包装它。代码看起来很好,无需自己打开并运行它,只需检查上面的“就绪”并打开开发工具,通过查看页面发出的请求,检查ajax是否真的成功加载了“../php/logout.php”。因此,我需要执行$.post语句,而不是执行ajax.send()。您可以替换打开的行,也可以删除所有ajax代码,并将其替换为一行。是的,我正在运行脚本,然后在用户单击按钮时重定向。我不熟悉ob
函数。ob函数捕获输出,可以将其存储在变量中,也可以回显或丢弃。必须删除任何回显以返回正确的json字符串。-关于输出控制函数的更多信息,我将对此进行研究。谢谢,很好用。非常感谢。