2012-06-08 32 views
0

我做了一個WordPress的主題,其中每個職位將有一個聯繫表格。聯繫表格將收集有關訪問者的信息並向網站管理員發送郵件。它還會發送一封電子郵件給訪問者,並鏈接到可下載的PDF(此代碼尚未完成)。WordPress的AJAX聯繫表格不返回數據

我遇到的問題是處理ajax表單的php函數不響應。它只返回-1(無屬性)。但是我得到一個狀態代碼200 OK。

我在MAMP Pro OSX和DynDNS上運行dev服務器。

這是PHP我在functions.php的

function ajax_contact() { 

    if(!empty($_POST)) { 
    $name = $_POST['name']; 
    $company = $_POST['company']; 
    $mail = $_POST['mail']; 
    $admin_mail = get_bloginfo('admin_email'); 
    $error = ""; 
    if(!$name) { 
     $error .= "Please tell us your name<br/>"; 
    } 
    if(!$company) { 
     $error .= "Please tell us your company<br/>"; 
    } 
    if(!$mail) { 
     $error .= "Please tell us your E-Mail address<br/>"; 
    } 

    if(empty($error)) { 
     $subject = "New download notification"; 
     $message = "You've received a new download notification. \n\n 
      Name: ".$name."\n 
      Company: ".$company."\n 
      Mail: ".$mail."\n"; 

     // Send a mail to the admin with the contact info.  
     $send_mail = wp_mail($admin_mail, $subject, $message); 

     // Send mail to visitor with the download link. 

     if($send_mail) { 
     echo "sent"; 
     die(); 
     } 

    } else { 
     echo "error: " . $error; 
     die(); 
    } 
    } 
} 

add_action('wp_ajax_nopriv_ajax_contact', 'ajax_contact'); 
add_action('wp_ajax_ajax_contact','ajax_contact'); 

這是JavaScript代碼

function sendForm(formId, postId, str) 
{ 

    console.log("formId: " + formId); 
    console.log("formId: " + postId); 
    console.log("str: " + str); 

    $.ajax({ 
     type: "POST", 
     url: "../wp-admin/admin-ajax.php", 
     action: "ajax_contact", 
     data: str, 
     success: function(data) { 

      $("#" + formId).ajaxComplete(function(event, request, settings){ 

      if(data == 'sent') { 
       $("#" + formId).find(".success").fadeIn("slow"); 
       } 
       else { 
       result = data; 
       $("#" + formId).siblings(".success").html(result); 
       } 
      }); 

     } 
    }); 


} 

這是實際的形式(我有多種形式在同一頁)

<form name="form-<?php the_ID(); ?>" id="form-<?php the_ID(); ?>"/> 
    Name <br/> 
    <input type="text" name="name" value=""/><br /> 
    Company/Organisation <br/> 
    <input type="text" name="company" value=""/><br /> 
    Email <br/> 
    <input type="text" name="mail" value=""/><br /> 

    <input type="hidden" name="postId" value="<?php the_ID(); ?>"> 

    <input type="submit" value="submit" class="requestbutton" id="requestButton-<?php the_ID(); ?>" rel="<?php the_ID(); ?>"/> 
    </form> 

編輯:改變了AJAX動作名稱,問題仍然存在

回答

0

你的AJAX action:contact_formajax_contact

+0

現在改口了。我仍然有同樣的問題。你認爲這可能與我使用本地開發環境(相同來源)有什麼關係? – Adrian

+0

在瀏覽器中檢查您的檢查員,看看您是否發佈了您的數據以及您的回覆是什麼。檢查網絡選項卡並尋找您的ajax呼叫。 – Nick

+0

我在檢查員中檢查了標題和響應。 這是形式的數據: 名稱:比爾 公司:IBM 郵箱:[email protected] 帖子ID:48 請求頭: 連接:保持活動 內容編碼:gzip 的Content-Length :22 Content-Type:text/html;字符集= utf-8 日期:2012年6月8日星期五15:45:22 GMT Keep-Alive:timeout = 15,max = 100 服務器:Apache 不同:接受編碼 X-Powered-By: 5.2.17 X-UA兼容:IE = Edge,chrome = 1 響應: -1 – Adrian