【发布时间】:2019-07-03 12:38:22
【问题描述】:
我正在尝试将表单发布到 PHP 脚本,但它在将请求验证为 POST 请求时卡住了,因此它从 PHP 脚本中退出。 AJAX 请求返回成功,但从数据库返回的数据表明请求识别为 POST 失败。我已经尝试更改内容类型等,但无济于事。
JS:
$(document).ready(function() {
$("#delete4").on('click', function(e) {
e.preventDefault();
var ok = confirm('Are you sure you want to delete this?');
if (ok == true)
{
console.log("true")
var data = $("#form4").serialize();
$.ajax({
data: data,
type: "post",
url: "delete_AJAX.php",
success: function(data) {
console.log("successfully deleted");
console.log(data);
//$("#div4").remove();
},
error: function(data) {
alert("fail");
console.log(data);
}
});
} else {
return;
}
});
});
HTML:
<form type="text" name="form4" id="form4" action="delete_AJAX.php" method="post">
<div class="aligner">
<button type="button" class="button_div" name="edit" onclick="send(52)">Edit</button>
<button type="button" class="button_div" id="delete4">Delete</button>
<button type="button" class="button_div" name="read" onclick="send2(52, 13)">See</button>
</div><br>
<input type="hidden" id="hidden_c4" value="13" name="hidden_c">
<input type="hidden" id="hidden_bid4" name="hidden_bid" value="52">
</form>
PHP:
require_once("db.php");
if ($_REQUEST['REQUEST_METHOD'] === 'POST')
{
$bid = $_POST['hidden_bid'];
echo "passed request";
$sql = "SELECT * FROM xxx WHERE yyy = $bid";
$result = mysqli_query($connection, $sql);
if ($result === false)
{
die("f1");
}
$resultCheck = mysqli_num_rows($result);
if (!resultCheck > 0)
{
echo "ERROR NO RESULT";
exit();
};
$row = mysqli_fetch_assoc($result);
$delete_cover = $row['cover'];
unlink($delete_cover);
// updating table row
$sql2 = "DELETE FROM xxx WHERE (yyy=?);";
$stmt = mysqli_stmt_init($connection);
if (!mysqli_stmt_prepare($stmt, $sql2))
{
header("Location: ../create.php?error&prepare1111");
exit();
}
else
{
$stmt->bind_param("i", $bid);
mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);
$connection->close();
echo "successfully deleted";
}
} else {
echo "FAILURE TO REQUEST";
}
所以我一直在失败“请求失败”,当我移除脚本的任何障碍时,帖子显示为空,并且变量未设置。因此它在“f1”错误处停止。任何帮助都会很棒!谢谢!
【问题讨论】:
-
不知道,当你知道你的方法是 POST 时,为什么还要使用 $_REQUEST,我知道这不是问题。首先检查浏览器控制台的参数
-
第二次使用
print_r($_REQUEST)在if ($_REQUEST['REQUEST_METHOD'] === 'POST')之前使用这个 -
你使用了错误的变量:它应该是
if ($_SERVER['REQUEST_METHOD'] === 'POST')。 -
TYPO
if ($_SERVER['REQUEST_METHOD'] === 'POST')找对地方 -
哦,那行得通,我认为问题不在于那里,因为如果我去掉 if 语句,它仍然不会通过。但是服务器工作得很好!非常感谢:)
标签: javascript php jquery ajax forms