【发布时间】:2017-08-05 11:55:16
【问题描述】:
我正在处理的一个项目遇到了挑战,我已尽我所能让它工作但没有成功。任何帮助将不胜感激。 我构建了一个 HTML/Bootstrap 表单,其字段值通过 ajax 函数发送到 mysql 数据库,并在页面上显示更新的数据库而不刷新页面,这部分工作正常。 每行都有一个删除按钮。但是,当我删除任何显示的行时,只会删除我单击的第一行并显示更新的数据库。随后尝试删除任何其他行都不起作用,直到重新加载页面并重复该过程,然后只有第一个删除操作再次起作用。我的挑战是让删除按钮删除一行,立即获取并显示更新的数据库,而无需刷新页面。 这是我的 ajax 调用:
var pry= $("#pry").val();
var sec = $("#sec").val();
var coll = $("#coll ").val();
var urlId = window.location.search.substring(1);
var pageId = urlId.split('=')[1];
//Insert into DB
$.ajax({
url: "process.php",
type: "POST",
async: false,
data:
{
"done": 1,
"pry": pry,
"sec": sec,
"coll": coll,
"page_id": pageId
},
success: function(){
displayFromDb();
clearInputs();
}
});
//delete from db
$(".my_butn").on("click", function(e){
e.preventDefault();
var id = $(this).attr("id");
$.ajax({
type: "POST",
url: "delete.php",
async: false,
data:
{
"pry": pry,
"sec": sec,
"coll": coll,
"page_id": pageId,
“id”: id
},
success: function(){
displayFromDb();
}
});
});
//function displayFromDb
function displayFromDb(){
$.ajax({
type: "POST",
url: "process.php",
async: false,
data:
{
"display": 1,
"page_id": pageId
},
success: function(d){
$("#tab-display").fadeIn().html(d);
}
});
}
//process.php file
<?php
//Insert to sql
if (isset($_POST["done"])){
$conn = mysqli_connect('localhost', 'root', '', 'educ');
$student_id = mysqli_real_escape_string($conn, $_POST['page_id']);
$pry = mysqli_real_escape_string($conn, $_POST["pry"]);
$sec = mysqli_real_escape_string($conn, $_POST["sec"]);
$coll = mysqli_real_escape_string($conn, $_POST["coll"]);
$sql = mysqli_query($conn, "INSERT INTO students (id, student _id, pry, sec, coll) VALUES (' ', '$student_id ', '$pry', '$sec', '$coll')");
}
//display from sql
if (isset($_POST['display'])){
$i=1;
$sql2 = mysqli_query($conn, "SELECT id, pry, sec, coll FROM students WHERE student_id = '$student_id");
if ($sql2){
echo '<table class="table table-striped table-bordered"><thead><tr><th>S/N</th><th>ID</th><th>PRY EDUC</th><th>SEC EDUC</th><th>COLL EDUC</th><th>DEL ROW</th></tr></thead>';
while ($row = mysqli_fetch_array($sql2, MYSQLI_ASSOC)){
$id = $row['id'];
$pry = $row['pry'];
$sec = $row['sec'];
$coll = $row['coll'];
$del = "<button type='button' class='btn btn-danger' id='$id'> X</button>";
echo '<tbody><tr><td>'.$i.'</td><td>'.$id.'</td><td>'.$pry.'</td><td>'.$sec.'</td><td>'.$coll.'</td><td>'.$del.'</td></tr></tbody>';
$i++;
}
echo '</table>';
}
}?>
这里还有我的 delete.php 文件
<?php
$conn = mysqli_connect('localhost', 'root', '', 'educ');
$student_id = mysqli_real_escape_string($conn, $_POST['page_id']);
$pry = mysqli_real_escape_string($conn, $_POST["pry"]);
$sec = mysqli_real_escape_string($conn, $_POST["sec"]);
$coll = mysqli_real_escape_string($conn, $_POST["coll"]);
$id = $_POST["id"];
$sql = mysqli_query($conn, "DELETE FROM students WHERE id = '$id' ");
}
?>
【问题讨论】:
-
您的删除查询包含一个勾号;仅此一项就会引发错误,并且有一个杂散的大括号。
-
感谢@Fred-ii-。原始查询不包含该错误,它是在复制我的代码时发生的。
-
由于各种原因,在 AJAX 请求中使用
async: false不是一个好主意 - 请参阅此 post。 -
感谢@Dhruv。但这可能是我遇到这个问题的原因吗?我必须进行哪些适当的更改才能删除 async: false 请?