WordPress中的Ajax联系表单

时间:2012-03-15 20:52:23

标签: php jquery ajax wordpress contact-form

我的WordPress网站有自定义的AJAX联系表单。它适用于Chrome,IE,Opera,Safari,但它在Firefox中失败。

我在我的function.php

中有这个
// Contact Form
wp_enqueue_script( 'my-ajax-request', plugin_dir_url( __FILE__ ) . 'js/ajax.js', array( 'jquery' ) );

// declare the URL to the file that handles the AJAX request (wp-admin/admin-ajax.php)
wp_localize_script( 'my-ajax-request', 'MyAjax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );

add_action('wp_ajax_mail_action', 'sending_mail');
add_action('wp_ajax_nopriv_mail_action', 'sending_mail');

function sending_mail(){

    $email = $_POST['email'];
    $comments = $_POST['comments'];
    $name = $_POST['name'];

    $to = get_bloginfo('admin_email');
    $subject = '[Contact Form] From '.$name;
    $message = "Name: $name \n\nEmail: $email \n\nComments: $comments"; 
    $headers = 'From: '.$name. "\r\n" . 'Reply-To: ' . $email;

    mail($to, $subject, $message, $headers);

}

用以下方式调用AJAX:

jQuery("#submit-button").click(function (e) { 

... ... 

var data = {};
data.email = $("#email").val();
data.name = $("#contactName").val();
data.comments = $("#commentsText").val();
data.action = "mail_action";

$.post(MyAjax.ajaxurl, data, onSuccess);

function onSuccess(results){ ... }

}

我实际上没有文件ajax.js.我很困惑,它在Chrome和其他浏览器中工作,但在Firefox中却没有。是因为缺少ajax.js吗?

我尝试删除该行(在functions.php中):

wp_enqueue_script( 'my-ajax-request', plugin_dir_url( __FILE__ ) . 'js/ajax.js', array( 'jquery' ) );

但是,表单在任何浏览器中都不起作用。我收到了错误     未捕获的ReferenceError:未定义MyAjax

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

您需要这样做到发送邮件功能结束

die(); // this is required to return a proper result

AJAX in Plugins页面的一半。

答案 1 :(得分:-1)

为什么不为此使用现成的解决方案? 试试WordPress Contact Form Slider

它也适用于AJAX和跨浏览器兼容。