0

WordPress テーマ用の ajax コンタクト フォームを作成中ですが、フォームの送信時に問題が発生しています。URLが正しいと確信しているのに、コンソールは私のmail-form.phpファイル(電子メールのフォーマットに使用される)を取得できないと言い続けます。

私が使用しているコードは次のとおりです。

jQuery.ajax({
    type: "POST",
    url: "<?php echo get_template_directory_uri(); ?>/mail-form.php",
    cache: false,
    data: "name=" + name + "&email=" + email + "&message=" + message,
    success: function (html) {
        jQuery("#contact-form").slideUp("slow");
        jQuery("#contact-form").after("<p><span class='center' id='send-message'>Your message has been sent! We will reply shortly!</span></p>");
        jQuery("#send-message").fadeIn("slow");
    }
}); 

フォームへのリンクは次のとおりです... http://wordpress-dev.designer17.com/contact/

前回これを使用したときはうまく機能したので、これにはかなり当惑しています。

4

3 に答える 3

0

.js ファイル内で PHP を使用しているため (56 行目):

url: "<?php echo get_template_directory_uri(); ?>/mail-form.php",

できることは、これをメイン テンプレートに追加することです。

var TEMPLATE_URI = "<?php echo get_template_directory_uri(); ?>";

次に、.js ファイル内で次を使用します。

url: TEMPLATE_URI + "/mail-form.php",
于 2013-06-05T17:13:19.877 に答える
0

JavaScript、この場合は $.ajax 関数呼び出しはクライアント側であり、サーバー側である php によって解析されません。このため、JavaScript パーサーは文字列 "" をリテラル文字列として解釈し、解析されません。この単純な問題を解決するには、相対 URL を使用するか、php コードを解析できる php テンプレートで JavaScript を生成します。

覚えておいてください: コードは常にサーバー側で解析/レンダリングされ、クライアントのブラウザーに送り返されます。その後、クライアント側のスクリプト (この場合は JavaScript コード) がブラウザーで実行されます。

于 2013-06-05T17:15:16.833 に答える
0

JavaScriptを.jsファイルに移動したと思いますが、httpサーバーにjavascriptファイルをphpとして処理するように指示しない限り、その中のphpは単なるテキストです。

関数を php ファイルに戻すか、(より良い方法) URL を属性として渡します。次に例を示します。

// PHP FILE
<form action="URLGOESHERE" id="form_id">
  ...

// JAVASCRIPT FILE
var url = $("#form_id").attr("action");
jQuery.ajax({
    type: "POST",
    url: url,
    ...
于 2013-06-05T17:17:53.843 に答える