我是php和ajax的新手。我想提交一个没有页面刷新的表单。我成功实现了这一目标。提交后的表单显示成功消息。但我希望在成功后留言。结果淡出并再次显示空表单字段。这样我就可以再次提交另一份表格了。
<script src="assets/jquery-1.12.4-jquery.min.js"></script>
<script src="assets/js/bootstrap.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
// submit form using $.ajax() method
$('#reg-form').submit(function(e){
e.preventDefault(); // Prevent Default Submission
$.ajax({
url: 'submit.php',
type: 'POST',
data: $(this).serialize() // it will serialize the form data
})
.done(function(data){
$('#form-content').fadeOut('slow', function(){
$('#form-content').fadeIn('slow').html(data);
$('#form-content').fadeOut('slow').html(data);
$('#form-content').fadeIn('slow').html();
});
})
.fail(function(){
alert('Ajax Submit Failed ...');
});
});
});
<div id="form-content">
<form method="post" id="reg-form" autocomplete="off">
<div class="form-group">
<input type="text" class="form-control" name="txt_fname" id="lname" placeholder="First Name" required />
</div>
<div class="form-group">
<input type="text" class="form-control" name="txt_lname" id="lname" placeholder="Last Name" required />
</div>
<div class="form-group">
<input type="text" class="form-control" name="txt_email" id="lname" placeholder="Your Mail" required />
</div>
<div class="form-group">
<input type="text" class="form-control" name="txt_contact" id="lname" placeholder="Contact No" required />
</div>
<hr />
<div class="form-group">
<button class="btn btn-primary">Submit</button>
</div>
</form>
</div>
submit.php
if( $_POST ){
$fname = $_POST['txt_fname'];
$lname = $_POST['txt_lname'];
$email = $_POST['txt_email'];
$phno = $_POST['txt_contact'];
?>
<table class="table table-striped" border="0">
<tr>
<td colspan="2">
<div class="alert alert-info">
<strong>Success</strong>, Form Submitted Successfully...
</div>
</td>
</tr>
<tr>
<td>First Name</td>
<td><?php echo $fname ?></td>
</tr>
<tr>
<td>Last Name</td>
<td><?php echo $lname ?></td>
</tr>
<tr>
<td>Your eMail</td>
<td><?php echo $email; ?></td>
</tr>
<tr>
<td>Contact No</td>
<td><?php echo $phno; ?></td>
</tr>
</table>
<?php
}?&gt;
请帮帮我。你可以在这里看到工作的例子 http://demos.codingcage.com/ajax-form-submit/
答案 0 :(得分:0)
首先,您需要修改表单中的ID属性,因为ID必须是唯一的。然后,提交成功后,您可以使用success
事件jQuery DOC。
所有这些都假设PHP方面没问题,正如你提到的那样。
HTML
<div id="response"></div>
<div id="form-content">
<form method="post" id="reg-form" autocomplete="off">
<div class="form-group">
<input type="text" class="form-control" name="txt_fname" id="fname" placeholder="First Name" required />
</div>
<div class="form-group">
<input type="text" class="form-control" name="txt_lname" id="lname" placeholder="Last Name" required />
</div>
<div class="form-group">
<input type="text" class="form-control" name="txt_email" id="email" placeholder="Your Mail" required />
</div>
<div class="form-group">
<input type="text" class="form-control" name="txt_contact" id="num" placeholder="Contact No" required />
</div>
<hr />
<div class="form-group">
<button class="btn btn-primary">Submit</button>
</div>
</form>
</div>
我刚刚添加了一个响应div,以防您需要让用户知道它是成功的(不是强制性的,但用户友好的)。我还修改了处理数据的方式(参见代码中的注释)
jQuery(3.2.1)
<script type="text/javascript">
function clear_form() // only if you want to clear the form after success
{ // I use the IDs from form, adapt to yours if needed
$("#fname").val('');
$("#lname").val('');
$("#email").val('');
$("#num").val('');
}
$(document).ready( function() {
$('#reg-form').submit(function(e){
e.preventDefault(); // Prevent Default Submission
var data = $("#reg-form").serialize(); // it will serialize the form data
$.ajax({
url: 'submit.php',
type: 'POST',
data: { data }, // added the { } to protect the data
success : function(data){ // here we use the success event
$('#response').html(data); // only if you use PHP response and want to show it
$('#form-content').fadeOut("slow");
clear_form(); // reset all fields
$('#form-content').fadeIn("slow");
},
error: function (request, status, error) { // handles error
alert(request.responseText); // change alert to whatever you want/need
}
})
.fail(function(){
alert('Ajax Submit Failed ...');
});
});
});
</script>