javascript - 数据录入成功无提示
问题描述
以下代码成功将数据提交到 mysql 数据库。但是,当字段为空白时,表单不会显示错误,并且在成功插入数据时不会使用成功消息填充 div。下面的 php 文件显示,如果插入成功,则结果变量设置为 1,这反映在 ajax 的 if else 条件中。
<body>
<div id = "container" >
<h3>jQuery AJAX Post method example with php and MySQL</h3>
<p><strong>Please fill in the form and click save.</strong></p>
<div id="message"></div>
<form name='form1'>
<table align = "">
<tr><td></td></tr>
<tr>
<td>
<label>First Name:</label>
</td>
<td>
<input type='text' placeholder='First Name' name='first_name' id= 'first_name' required ><br />
</td>
</tr>
<tr>
<td>
<label>Last Name:</label>
</td>
<td>
<input type='text' placeholder='Last Name' name='last_name' id='last_name' required ><br />
</td>
</tr>
<tr>
<td>
<label>Email:</label>
</td>
<td>
<input type='email' name='email' placeholder='Email' id='email' required ><br />
</td>
</tr>
<tr>
<td> </td>
<td>
<input class='btn' type="button" id = "saveusers" value = "Save" />
</td>
</tr>
</table>
</form>
</div>
<script src="http://code.jquery.com/jquery-3.1.1.min.js"></script>
<script type="text/javascript">
$(function(){
$("#saveusers").on('click', function(){
var first_name = $("#first_name").val();
var last_name = $("#last_name").val();
var email = $("#email").val();
$.ajax({
method: "POST",
url: "saverecords_ajax.php",
data: { "first_name": first_name, "last_name": last_name, "email": email},
}).done(function( data ) {
var result = $.parseJSON(data);
var str = '';
var cls = '';
if(result == 1) {
str = 'User record saved successfully.';
cls = 'success';
}else if( result == 2) {
str = 'All fields are required.';
cls = 'error';
}else if( result == 3) {
str = 'Enter a valid email address.';
cls = 'error';
}else{
str = 'User data could not be saved. Please try again';
cls = 'error';
}
$("#message").show(3000).html(str).addClass('success').hide(5000);
});
});
});
</script>
</body>
saverecords_ajax.php 文件
<?php
$host = "localhost";
$username = "root";
$password = "password";
$dbname = "testing";
$result = 0;
/* Create connection */
$conn = new mysqli($host, $username, $password, $dbname);
/* Check connection */
if ($conn->connect_error) {
die("Connection to database failed: " . $conn->connect_error);
}
/* Get data from Client side using $_POST array */
$fname = $_POST['first_name'];
$lname = $_POST['last_name'];
$email = $_POST['email'];
/* validate whether user has entered all values. */
if(!$fname || !$lname || !$email){
$result = 2;
}elseif (!strpos($email, "@") || !strpos($email, ".")) {
$result = 3;
}
else {
//SQL query to get results from database
$sql = "insert into users (first_name, last_name, email) values (?, ?, ?) ";
$stmt = $conn->prepare($sql);
$stmt->bind_param('sss', $fname, $lname, $email);
if($stmt->execute()){
$result = 1;
}
}
echo $result;
$conn->close();
解决方案
推荐阅读
- odata - SAPUI5 OData V2 具有多个不同组的批处理操作
- sql-server - 下载sql server 连接不上服务器
- node.js - 如何从节点中的 formidable.js 中捕获任何错误?
- azure - Azure devops:分支策略
- forms - 表单提交时复选框输入仍然为假
- c# - 如何从 h4 获取此文本?
- amazon-web-services - 在 Amazon Cognito 中创建新用户并公开共享他的凭证是一种好习惯吗?
- sql - 带有 ANY 子句的 Postgres 相似性运算符 - 每个参数的限制?
- java - 如何将 completableFuture.supplyAsync() 的返回类型分配给对象?
- php - 在控制器中接收多个输入