php - 无法使用ajax将数据存储在mysql中
问题描述
我正在尝试使用 PHP 和 Ajax 将表单详细信息保存在数据库中。它包括文本字段和图像。我的数据没有保存在 mysql 中。如果我试图在没有 ajax 的情况下保存数据,它会完美运行。所以请在我的代码中帮助我。
这就是我在数据库中保存我的详细信息的方式:
// Create database connection
$db = mysqli_connect("localhost:8889","root","123","temp") or die("could not connect to server");
// If upload button is clicked ...
$finame=$_POST['firstname'];
$laname=$_POST['lastname'];
$image_text = $_POST['image_text'];
$template = $_POST['template'];
$address = $_POST['address'];
$email = $_POST['email'];
$experience = $_POST['experience'];
// Get image name
$image = $_FILES['image']['name'];
$directory = date("Y").'/'.date("m").'/'.date("d").'/';
//If the directory doesn't already exists.
if(!is_dir($directory)){
//Create our directory.
mkdir($directory, 755, true);
}
// image file directory
$target = $directory.basename($image);
$sql = "UPDATE person SET fname='$finame', sname='$laname', image='$image', about='$image_text', template='$template', address='$address', email='$email', experience='$experience' where id=1";
// execute query
mysqli_query($db, $sql);
?>
这是我在mysql中的表:
CREATE TABLE `person` (
`fname` varchar(30) DEFAULT NULL,
`sname` varchar(30) DEFAULT NULL,
`image` mediumblob NOT NULL,
`about` varchar(10000) NOT NULL,
`id` int(10) NOT NULL,
`template` int(10) NOT NULL,
`address` varchar(300) NOT NULL,
`email` varchar(100) NOT NULL,
`experience` varchar(1000) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
这是我的表格和脚本:
<form enctype="multipart/form-data" id="frmBox" method="post">
<input type="text" name="firstname" id="fname" placeholder="First Name">
<input type="text" name="lastname" id="lname" placeholder="Last Name">
<input type="text" name="address" placeholder="Your address..." id="address">
<input type="file" name="image" id="image">
<textarea id="text" cols="30" rows="4" name="image_text" placeholder="Say something"></textarea></div>
<input type="radio" value="1" name="template" style="margin-left: 15px;"> Template 1
<input type="radio" value="2" name="template"> Template 2
<input type="text" name="email" placeholder="Your Email" id="email">
<textarea id="experience" cols="30" rows="4" name="experience" placeholder="Say something..."></textarea>
<h3 id="success"></h3>
<input type="submit" name="upload" class="sub-btn" value="submit">
</form>
<script type="text/javascript">
$('document').ready(function(){
$('#frmBox').submit(function(){
$.ajax({
type: 'POST',
url: 'insert.php',
data: $('#frmBox').serialize(),
success: function(response){
alert(response);
}
});
});
// var form = document.getElementById('frmBox').reset();
});
</script>
解决方案
您必须preventDefault
在脚本中使用以防止提交表单。然后,您将能够将数据传递给您的 php 脚本,但图像除外。您可以FormData
用于此目的。这是脚本:
<script type="text/javascript">
$('document').ready(function(){
$('#frmBox').submit(function(e){
e.preventDefault();
var formData = new FormData(this);
$.ajax({
type: 'POST',
url: 'insert.php',
data: formData,
processData: false,
contentType: false,
success: function(response){
alert(response);
}
});
});
});
</script>
推荐阅读
- java - 使用 CompletableFuture 提供同步和异步方法作为 API 的一部分
- powerbi - PowerBI如何将堆栈条形图嵌入为条形的百分比
- javascript - 如何将 onclick 返回到 kendoGrid 列?
- java - 如何在java中的双向链表中快速排序
- c# - 当字符串从另一个类更改时,我可以触发事件吗?
- discord - on_member_update 昵称更改未按预期进行
- opengl - 使用 GL_SAMPLE_ALPHA_TO_COVERAGE 并写入 Alpha 通道
- text-to-speech - PowerShell 中的 Mozilla TTS:“用户警告:具有 CUDA 功能 sm_86 的 NVIDIA GeForce RTX 3060 Ti 与当前的 PyTorch 安装不兼容
- javascript - 显示一个
- python - Keras:输入张量的等级必须为 3、4 或 5,但为 2