【发布时间】:2018-12-31 04:02:42
【问题描述】:
所以我正在开发一个待办事项应用程序,并在单击任务以标记为已完成时使用 Ajax 将数据发送到 PHP。然后 PHP 向 MySQL 发送一个 SQL 查询,并将完成列中的值从 1 更改为 0 或 Visa vera。最初,我尝试发送一个 PHP 标头以返回该页面,但它没有工作,所以在发送请求后我编写了一些 JavaScript 代码来刷新页面,任务现在被标记为已完成,我有一个 css 样式为了那个原因。我想知道,我认为 Ajax 的目的是不必重新加载整个页面,所以如果我使用错误的 Ajax 并且有更好的方法来做到这一点?该项目有效,但我想我只想对我的代码进行一些反馈。
main.js:
for(i=0; i < div.length; i++){
div[i].addEventListener("click", function(e){
let xhr = new XMLHttpRequest();
xhr.open('POST', 'process_complete.php', true);
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
let task_num = e.target.getAttribute("id");
xhr.onreadystatechange = function(){
if(xhr.readyState === 4 && xhr.status === 200){
location.reload();
}
}
xhr.send(JSON.stringify(task_num));
});
}
process_complete.php:
if(isset($_SERVER['HTTP_X_REQUESTED_WITH'])){
$data = file_get_contents('php://input');
$id = json_decode($data);
$sql = mysqli_query($conn, "SELECT * FROM tasks WHERE Num = '$id'");
if($sql === false){
printf("error: %s\n", mysqli_error($conn));
}
while($row = mysqli_fetch_row($sql)){
if($row[3] === "1") {
$mysqli_update = mysqli_query($conn, "UPDATE tasks SET Completed = 0 WHERE Num = '$id';");
} else {
$mysqli_update = mysqli_query($conn, "UPDATE tasks SET Completed = 1 WHERE Num = '$id';");
}
}
}
【问题讨论】:
-
我会使用 Fetch API 它是做 ajax 的新方法
-
好的,谢谢,我会调查的。
-
该帖子没有答案,用户正在使用 Java。
标签: javascript php ajax