2015-10-19 102 views
2

我尝试准备简单的联系表单与jquery,ajax和PHP没有刷新。一切工作正常,除了event.preventDefault();Jquery,PHP和Ajax的形式没有刷新

这是我的文件:

contact_engine.php

<?php 

    $name = $_POST['name']; 
    ... 


    $from = 'from'; 
    $to = 'to'; 
    $subject = 'subject'; 
    $human = '4'; 

    $body = "........."; 

    if ($_POST['submit'] && $human == '4') {     
     if (mail ($to, $subject, $body, $from)) { 
      echo '<p>Thanks</p>'; 
     } else { 
     echo '<p>Error</p>'; 
     } 
    } else if ($_POST['submit'] && $human != '4') { 
    echo '<p>You answered the anti-spam question incorrectly!</p>'; 
    } 
?> 

阿贾克斯/ jQuery的

$('form').on('submit', function(event){ 
    event.preventDefault(); 
    $.ajax('.../contact_engine.php', { 
     type: 'POST', 
     data: $('form').serialize(), 
     success: function(result) { 
     } 
    }); 
}); 

PHP

<form method="post" action="<?php bloginfo('template_directory'); ?>/contact_engine.php">  
     <div class="box"> 
      <input type="text" name="name" class="pola formbg name" placeholder="Name" /> 
      . 
      . 
      . 
      . 

      <p><input id="form-button" type="submit" name="submit" value="Send" /></p> 
      </div> 
      <br style="clear: left;" /> 
    </form> 

当我删除event.preventDefault();一切都好,我收到来自表单的消息,但网站很清爽,我看到'感谢'的消息。

我用你可能看到的Wordpress。

+0

您已标记wordpress,所以你可以看看https://codex.wordpress.org/AJAX_in_Plugins我不相信您的ajax网址正在运行$ .ajax('.../contact_engine.php', – Svetoslav

+0

请注意,您的网址中有明显的拼写错误。除非你创建了一个名为'...'的目录,它应该是'../ contact_engine.php',而不是'.../contact_engine.php'。 –

+0

你必须在这里使用2个点,而不是3:'$ .ajax('.../contact_engine.php'' –

回答

2

是的,在这种情况下,为什么有一个表单/提交按钮。 删除表单并将输入从提交按钮更改为标准按钮。 将功能放在按钮上,完成任务。

$('#form-button').on('click', function(event){ 

    $.ajax('.../contact_engine.php', { 
     type: 'POST', 
     data: $('form').serialize(), 
     success: function(result) { 
      //do something with the return code 
     } 
    }); 
}); 
+0

这就是它!谢谢:) – Michal

+0

没问题 - 快乐的帮助 –

0

让表单的ID - 我认为这个问题是您提交处理程序不点火:

$("#myForm").submit(function(event) {... 

,然后改变你的jQuery阅读:

$("#myForm").submit(function(event) { 
    event.preventDefault(); 
    ... 

http://api.jquery.com/jquery.post/

+0

当我做到了,表单工作正常,但仍使用'event.preventDefault();'进行刷新。但感谢您的想法。 – Michal