【问题标题】:Jquery, PHP and Ajax form without refreshingJquery、PHP和Ajax表单无需刷新
【发布时间】:2015-10-19 13:51:05
【问题描述】:

我尝试使用 jquery、ajax 和 php 准备简单的联系表单,无需刷新。除了event.preventDefault();之外,一切都很好

这是我的文件:

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>';
    }
?>

Ajax/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。

【问题讨论】:

  • 您已标记 wordpress,因此您可以查看 codex.wordpress.org/AJAX_in_Plugins 我不相信您的 ajax url 正在工作 $.ajax('.../contact_engine.php',
  • 请注意,您的网址中有明显的拼写错误。除非您创建了一个名为... 的目录,否则它应该是../contact_engine.php,而不是.../contact_engine.php
  • 你必须在这里只使用 2 个点,而不是 3 个:$.ajax('.../contact_engine.php'

标签: javascript php jquery ajax wordpress


【解决方案1】:

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

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

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

【讨论】:

  • 就是这样!谢谢:)
【解决方案2】:

给你的表单一个 ID - 我认为问题是你的提交处理程序没有触发:

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

然后将您的 jQuery 更改为:

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

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

【讨论】:

  • 当我这样做时,表单工作正常,但即使使用 'event.preventDefault();' 仍然可以刷新。但谢谢你的想法。
猜你喜欢
  • 1970-01-01
  • 2014-03-08
  • 1970-01-01
  • 2013-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-26
  • 2021-07-02
相关资源
最近更新 更多