【发布时间】:2016-11-06 01:57:51
【问题描述】:
我是 wordpress 新手,我想要一个自定义表单,所以我创建了这个表单,用户可以在其中从前端输入数据。但是当我提交这个表单时,如果成功,在<div id="feedback"></div>内,整个页面又被显示出来了。因为我在 ajax 成功或错误函数中获得了所有“数据”。如何仅获取 echo 中的数据?
<?php
/*
Template Name: Complain
*/
get_header();
?>
<?php
if($_POST['submit']) {
global $wpdb;
$complain_name = $_POST['complain_name'];
if($wpdb->insert(
'wp_complain',
array(
'name'=>$complain_name
)
)==false) {
echo 'Database insertion failed';
}
else {
echo 'Database insertion successful';
}
}
else {
?>
<form action="" method="POST" role="form" class="form-horizontal">
Name <input type="text" id="complain_name" class="form-control" name="complain_name" required="required" autocomplete="off"/>
<input class="btn btn-block" id="submit" type="submit" value="Submit" name="submit">
<div id="feedback"></div>
</form>
<script>
$(document).ready(function(e){
$("form").on('submit',(function(e) {
e.preventDefault();
//heresome other functions for validation
formData =new FormData(this)
$.ajax({
url:'<?php echo content_url(); ?>/themes/abc/complain-detail.php',
type: "POST",
data: formData ,
contentType: false,
cache: false,
processData:false,
success: function(data)
{
$('#feedback').html(data)
},
error: function(data)
{
$('#feedback').html(data)
}
});
}
));
})
</script>
<?php
}
get_footer();
?>
【问题讨论】:
-
尝试使用
die("...");而不是echo "....";,也可以使用if(isset($_POST["submit"]) && !empty($_POST["submit"])) -
好主意@MamdouhFreelancer!
die();在if($_POST['submit']) {的完整末尾就可以了。它比我的答案(我刚刚删除)要好。