私はWordPressの新機能です。私はカスタマイズフォームが必要なので、ユーザーがフロントエンドからデータを入力できるようにこのフォームを作成しました。しかし、私がこのフォームを提出すると、それが成功すると、<div id="feedback"></div>
の中に、全ページが再び表示されています。私はすべての "データ"をajaxの成功またはエラー関数で取得します。エコー中のデータだけを取得する方法はありますか?wordpressの同じページにajaxフォームを投稿するには
<?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();
?>
'echo" .... ";'の代わりに 'die(" ... ")";を使用しようとしましたが、 'if(isset($ _ POST [" submit "])&&!空($ _ POST ["submit"])) ' –
良いアイデア@MamdouhFreelancer! 'if($ _ POST ['submit']){'の '' die(); 'は完全な終わりです。そしてそれは私の答え(私が今削除したもの)よりも優れています。 –