2012-03-15 16 views
0

私は自分のワードプレスサイトのカスタムAJAXコンタクトフォームを持っています。 Chrome、IE、Opera、Safariで正常に動作しますが、Firefoxでは失敗します。Ajax WordPressのコンタクトフォーム

私は、この私の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が定義されていません

助けてください。

+1

存在しないファイルをエンキューしようとしているのはなぜですか?それを空のファイルにして動作させることはできますか?多分私は問題を理解していないでしょう。 – mikevoermans

+0

それを試して、うまくいきませんでした。 – BBee

+0

あなたが正しい方向にあなたを導くFFから走ったときにFirebugから何かエラーが出ていますか? – mikevoermans

答えて

0

あなたは

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

AJAX in Plugins半分の方法ページダウンあなたのメール送信機能の終わりに、このする必要があります。

-1

なぜこのような解決策を使用しないのですか? お試しくださいWordPress Contact Form Slider

また、AJAXおよびクロスブラウザ対応でも動作します。

関連する問題