0

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' ) );

しかし、フォームはどのブラウザーでも機能しません。Uncaught ReferenceError: MyAjax is not defined エラーが発生しました

どんな助けでも大歓迎です。

4

2 に答える 2

0

メール送信機能の最後までこれが必要です

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

プラグインの AJAX は、ページの途中にあります。

于 2012-03-16T11:57:26.657 に答える
-1

これには既製のソリューションを使用してみませんか? WordPress お問い合わせフォーム スライダーを試す

また、AJAX およびクロスブラウザー互換で動作します。

于 2015-01-09T14:47:44.347 に答える