[英]Ajax POST call doesn't send or submit any data
我试图使我的提交按钮无需重新加载即可将数据发送到我的PHP文件,但是,当我使用此调用时,它不发送任何数据,并且都不保存在数据库中。
$('#formSubmitData').on('submit', function(event) {
event.preventDefault();
var msg = $('#textareaSubmitData').val();
$.ajax({
url: 'searchData.php', //this is ALSO how the text is being send to the database to be retrieved later on.
type: 'POST',
data: {message:msg},
success: function(data) {
console.log(data);
data = msg;
alert(data);
}
});
});
警报显示正确的值,但是在我的数据库中,行保持为空。
PHP代码如何:
if (isset($_POST['submit']) && $_SERVER['REQUEST_METHOD'] === "POST") {
include_once 'dbConn.php';
$name = $_SESSION['userName'];
$msg = $_POST['textareaSubmitData'];
$stmt = $conn->prepare("INSERT INTO messages (name, message) VALUES (?, ?)");
$stmt->bind_param('ss', $name, $msg);
$name = $_SESSION['userName'];
$msg = $_POST['textareaSubmitData'];
$stmt->execute();
$conn->close();
$stmt->close();
} else {
header('Location: index.php?send=failure');
exit();
}
}
认为有两个问题,首先是您需要确保要发送的数据是对象,而不仅仅是值...
data: { textareaSubmitData: msg },
第二个是当您尝试处理数据时,第一行是...
if (isset($_POST['submit']) && $_SERVER['REQUEST_METHOD'] === "POST") {
因此,这是在“提交”中寻找一些POST数据-您不会发送。 因此,当您(现在)仅发送“ textareaSubmitData”时-检查是否已设置...
if (isset($_POST['textareaSubmitData']) && $_SERVER['REQUEST_METHOD'] === "POST") {
您正在发送数据中的提交按钮的值。 您需要将表单数据发送到服务器。
$('#formSubmitData').on('submit', function(event) {
event.preventDefault();
var data = new FormData(this);
$.ajax({
url: 'searchData.php', //this is ALSO how the text is being send to the database to be retrieved later on.
type: 'POST',
data: data,
success: function(data) {
data = msg;
alert(data);
}
});
});
同样,使用浏览器的调试功能,明确地“查看(!)”正在发送的内容。 当AJAX调用结束时,您可以看到 HTML POST
已完成–因此,您可以确切地看到URL是什么,以及正在提供(或不提供)什么数据。
在主机方面,您还可以执行诸如print_r($_POST)
以便再次查看 PHP收到了什么。
我的经验是,一旦您看到发生了什么,调试就非常快速和容易。 而猜测无济于事。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.