0

すべての投稿に連絡先フォームがある WordPress テーマを作成しています。お問い合わせフォームは、訪問者に関する情報を収集し、サイト管理者にメールを送信します。また、ダウンロード可能な PDF へのリンクが記載された電子メールが訪問者に送信されます (このコードはまだ完了していません)。

私が抱えている問題は、ajax フォームを処理する php 関数が応答しないことです。-1 (プロパティなし) のみを返します。しかし、ステータス コード 200 OK が表示されます。

MAMP Pro OSX と DynDNS で開発サーバーを実行しています。

これは、functions.php にある 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 アクション名を変更しましたが、問題は解決しません

4

1 に答える 1

0

あなたのAJAXaction:はすべきではありcontact_formませんajax_contact

于 2012-06-08T14:31:27.457 に答える