Php 防止在提交后重定向到下一页

Php 防止在提交后重定向到下一页,php,database,email,redirect,Php,Database,Email,Redirect,我得到了一个联系表格,它将发送电子邮件并写入数据库。问题是它将重定向到新页面 index.php jQuery代码: $( "#sendform" ).submit(function(e) { //e.preventDefault(); //alert( "Handler for .submit() called." ); }); detail.php表单: <form name="contact

我得到了一个联系表格,它将发送电子邮件并写入数据库。问题是它将重定向到新页面

index.php jQuery代码:

            $( "#sendform" ).submit(function(e) {

            //e.preventDefault();
            //alert( "Handler for .submit() called." );
        }); 
detail.php表单:

<form name="contactform" id="sendform" method="POST" action="<?php echo $editFormAction;?>">
<div id="links">

<h2>Uw Boodschap</h2>
<textarea name="message"></textarea>

</div>
<div id="rechts">
    <img src="" id="postzegel" name="postzegel" width="80" height="64" class="kaart"/>
    <input type="hidden" name="kaartURL" id="kaartURL" value="" />
    <input type="hidden" name="kaartNr" id="kaartNr" value="<?php echo $kaartNr?>"/>
    <h2 class="afzender">Afzender</h2>
    <input type="text" value="Uw naam" name="naamzender" onfocus="if (this.value == 'Uw naam') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Uw naam';}" maxlength="50" size="33">
    <input type="text" value="Uw Email" name="emailzender" onfocus="if (this.value == 'Uw Email') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Uw Email';}" maxlength="50" size="33">
            <h2>Ontvanger</h2>
    <input type="text" value="Naam" name="naamontvanger" onfocus="if (this.value == 'Naam') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Naam';}" maxlength="50" size="33">
    <input type="text" value="Email"name="emailontvanger" onfocus="if (this.value == 'Email') {this.value = '';}"  onblur="if (this.value == '') {this.value = 'Email';}"maxlength="50" size="33">
    <input type="submit" id="submit" value="Verzend mijn Ecard" >

</div>
<input type="hidden" name="MM_insert" value="contactform" />
</form>

如果我省略重定向,它将在提交后重定向到detail.php,如果我使用e.preventDefault,它将不会执行电子邮件/数据库php代码。我想在不更改或重新加载页面的情况下执行电子邮件/数据库php代码。

试试这个,它会工作的

  $("#sendform").on('submit', function (e) {
      e.preventDefault();
      console.log($(this).attr('action'));
      console.log($(this).serialize());
      $.ajax({
         url: $(this).attr('action'),
         data: $(this).serialize()
     }).done(function (data) {
        if (console && console.log) {
          console.log("form submitted Nice Aaah");
        }
     });
   });

您似乎正在创建一个使用jQuery代码提交表单的无限循环。preventDefault将停止表单重定向/处理如果这是您想要做的,为什么会被注释掉?但是您需要捕获数据并以另一种方式提交,例如ajax调用。对不起,我忘了删除该行。使用该行可以捕获表单提交的响应,并提供一个处理程序在提交时执行自定义操作。我可以在jquery中执行数据库/电子邮件php代码吗?这就是问题所在。我真的不知道如何从phpemail/数据库中捕获数据。我使用了这段代码,但什么也没发生。请注意,我在detail.php中编写了我的整个数据库/电子邮件php代码,这些代码将在我按submit后执行。你不能将这些代码分离到另一个文件中吗?不要将email.php包含在details.php中。如果你这样做,它将更加模块化。因此details.php将具有表单,操作将是database/email.php,然后它将工作,在email.php中,您需要取消$_请求的序列化,然后您将使用parse_str$strI获得表单变量数组。我刚刚将整个电子邮件和数据库php代码添加到database.php中,并将我的表单操作写成:action=database.php。当然,这会使我重定向到database.php,这是应该防止的。。只有php代码应该被执行。您可以检查表单id吗?您是否使用sendform作为表单的id?如果是相同的,它应该可以工作。看这里,
  $("#sendform").on('submit', function (e) {
      e.preventDefault();
      console.log($(this).attr('action'));
      console.log($(this).serialize());
      $.ajax({
         url: $(this).attr('action'),
         data: $(this).serialize()
     }).done(function (data) {
        if (console && console.log) {
          console.log("form submitted Nice Aaah");
        }
     });
   });