form action没有在使用ajax和php插入数据时起作用。

7 浏览
0 Comments

form action没有在使用ajax和php插入数据时起作用。

我想使用PHP,MySqli和AJax从数据库中插入数据而不刷新页面,但是表单操作不起作用。我有一个名为'tbl_user'的表和字段'source','source1','source2','adult','child','infant',还有一个同名的id,请分享这个想法。

index.php:

// 用于使用的AJax操作消息

php脚本:

session_start();

date_default_timezone_set('Australia/Melbourne');

if(isset($_POST['submit'])){

$source = mysqli_real_escape_string($conn, $_POST['source']);

$source1 = mysqli_real_escape_string($conn, $_POST['source1']);

$source2 = mysqli_real_escape_string($conn, $_POST['source2']);

$adult = mysqli_real_escape_string($conn, $_POST['adult']);

$child = mysqli_real_escape_string($conn, $_POST['child']);

$infant = mysqli_real_escape_string($conn, $_POST['infant']);

$reg_id = rand();

$created = date('y-m-d-h-i-s');

$query = "INSERT INTO tbl_user(source,source1,source2,adult,child,infant,reg_id,created)

VALUES('$source','$source1','$source2','$adult','$child','$infant','$reg_id','$created')";

if(mysqli_query($conn, $query)){

$_SESSION['reg_id']=$reg_id;

header('Location:index.php');

}

}

?>

ajax脚本:

$(document).ready(function() {

var delay = 2000;

$('.btn-default').click(function(e){

e.preventDefault();

var source = $('#source').val();

if(source == ''){

$('.message_box').html('Enter Your source!');

$('#source').focus();

return false;

}

var source1 = $('#source1').val();

if(source1 == ''){

$('.message_box').html('Enter Your source1!');

$('#source1').focus();

return false;

}

var source2 = $('#source2').val();

if(source2 == ''){

$('.message_box').html('Enter Your source2!');

$('#source2').focus();

return false;

}

var adult = $('#adult').val();

if(adult == ''){

$('.message_box').html('Enter Your adult!');

$('#adult').focus();

return false;

}

var child = $('#child').val();

if(child == ''){

$('.message_box').html('Enter Your child!');

$('#child').focus();

return false;

}

var infant = $('#infant').val();

if(infant == ''){

$('.message_box').html('Enter Your infant!');

$('#infant').focus();

return false;

}

$.ajax({

type: "POST",

url: "index.php",

data: "source="+source+"source1="+source1+"source2="+source2+"adult="+adult+"child="+child+"infant="+infant,

beforeSend: function() {

$('.message_box').html('');

},

success: function(data){

setTimeout(function() {

$('.message_box').html(data);

}, delay);

}

});

});

});

0
0 Comments

问题原因:

这个问题的原因是使用AJAX进行POST请求时,发送的数据是字符串,这导致了问题。

解决方法:

尝试按照以下方法进行修改:

$.ajax
   ({
   type: "POST",
   url: "index.php",
    dataType: "json",
   data:{
       "source":source,
       "source1":source1,
       "source2":source2,
       "adult":adult,
       "child":child,
       "infant":infant
   }, 
   beforeSend: function() {
   $('.message_box').html(
   ''
   );
   },        
   success: function(data){
   setTimeout(function() {
   $('.message_box').html(data);
   }, delay);
   }
   });
   });

出现错误了吗?

出现了同样的问题。

错误是什么?

表单没有反应,没有显示消息。

请在开发者工具中检查控制台。

请检查我的表单。

我注意到你在$(document).ready()中调用了AJAX方法,这意味着每当页面加载时,你的代码都会发起一个AJAX请求。

$(document).ready(function()已经在这里调用了。

页面中的PHP、HTML表单和AJAX代码都在index.php中。

希望有人能帮帮我。

0