所以我尝试了很多方法来解决我的网络问题。我希望在这里找到一个解决方案。问题是ajax成功功能正常工作,在网络部分,它的状态代码为200,数据输入,但它没有响应,数据也没有插入数据库。
html表单:
<form action="./includes/systemcheck.inc.php" id="reg1" method="post">
<input type="text" id="reg_fname" name="fullName" class="mr_fni">
<input type="number" id="reg_uid" name="userID" class="mr_idi">
<input type="number" id="reg_pnumber" name="phoneN" class="mr_pni">
<input type="submit" name="register1" id="reg1_sub_butt" value="next"
class="cim_gSubmmit">
</form>
<p id="reg1_result"></p>
php:
if(isset($_POST['register1'])){
$fullName = $_POST['fullName'];
$userID = $_POST['userID'];
$phoneN = $_POST['phoneN'];
if(!empty($fullName) || !empty($userID) || !empty($phoneN)){
$sql = "INSERT INTO `hotelsystem` (`fullName`, `phoneNumber`, `id`)
VALUES ('$fullName', '$phoneN', '$userID')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}
else{
echo "fill all fields please";
}
ajax:
window.onload = function(){
$('#reg1_sub_butt').click(function (e) {
var formData = {
'fullName' : $('#reg_fname').val(),
'userID': $('#reg_uid').val(),
'phoneN': $('#reg_pnumber').val()
}
if(formData.fullName == '' || formData.userID == '' || formData.phoneN == ''){
$('#reg1_result').html('Please fill all fields');
} else {
//if no issues attempt to push code
submitData(formData);
$('#reg1_result').show();
}
return false;
});
}
function submitData(formData){
console.log(formData);
$.ajax({
type: 'POST',
url: './includes/systemcheck.inc.php',
data: formData,
contentType: 'charset=UTF-8',
async: false,
success: function(response) {
$('#reg1_result').html(response + "work");
},
error: function() {
$('#reg1_result').html('There was an error');
}
});
}
通过AJAX发送的formData
变量不包含名为register1
的字段,因此代码不会输入第一个if块(if(isset($_POST['register1']))
(,并且该块上没有其他内容可以提供任何替代输出。
只需将该字段添加到formData
对象中即可发送该字段。它的内容并不重要,它只需要存在。例如:
var formData = {
'fullName' : $('#reg_fname').val(),
'userID': $('#reg_uid').val(),
'phoneN': $('#reg_pnumber').val(),
'register1': true
}
或者,您可以保持formData
的原样,只需让PHP检查一个或多个其他必需字段,例如:
if(isset($_POST['fullName'])){
p。S您应该从代码中删除async:false
,因为它已被弃用且不必要。contentType: 'charset=UTF-8'
也无效或有用,您也可以删除它。
您应该修复mysqli代码中的SQL注入漏洞——事实上,无论SQL注入如何,只要在其中一个输入字段中放入'
,就可以破坏您的查询,所以这是解决问题的另一个好理由。