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動作名稱,問題仍然存在
現在改口了。我仍然有同樣的問題。你認爲這可能與我使用本地開發環境(相同來源)有什麼關係? – Adrian
在瀏覽器中檢查您的檢查員,看看您是否發佈了您的數據以及您的回覆是什麼。檢查網絡選項卡並尋找您的ajax呼叫。 – Nick
我在檢查員中檢查了標題和響應。 這是形式的數據: 名稱:比爾 公司: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