2012-03-15 78 views
0

我爲我的WordPress網站定製了AJAX聯繫表。它在Chrome,IE,Opera,Safari上運行良好,但在Firefox中失敗。WordPress中的Ajax聯繫表格

我有這個在我的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 2012-03-15 20:56:01

+0

試過,沒有工作。 – BBee 2012-03-15 21:22:35

+0

當你從FF運行時,你是否從Firebug獲得任何錯誤,這會導致你在正確的方向? – mikevoermans 2012-03-15 21:24:02

回答

0

你需要給你的郵件發送功能

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

AJAX in Plugins一半時頁面的結束。