0

contact.php

... html form ...

$('#submit').click(function(){
$.post("mail.php", $("#contact").serialize(), function(response) {
$('#success').html(response);
});
return false;
});  

mail.php は (メールを送信するための) 別のファイルであり、すべてがこの配置で機能します。

しかし、contact.php を index.php にロードする必要があります。

$('#divR').load('chapters/contact.php');

対応するjs行は

 $.post("chapters/mail.php", $("#contact").serialize(), function(response) {...  

この場合、フォームのresponse送信元mail.phpは受信されますが、配列は空です。つまり、フォームは!?POSTにデータを送信しません。mail.php

4

2 に答える 2

1

コードが実際に何をするかを確認するために 2 つの新しいページにコードを書き、いくつかのことに気付きました。Enter キーを押してフォームを送信することもできるため、クリックの代わりに送信ハンドラーを呼び出すなど、いくつかの小さなことを行いますが、最も重要なのはデータ自体です。フォームをシリアル化する必要はありません。ブラウザーが既にそれを行っています. このスクリプトでは、データを新しいオブジェクトに保存し、それを$.postメソッドに渡します。

<form method="post" action="" id="contact">
    <div>
        <input id="email" type="text">
    </div>
    <div>
        <input id="submit" type="submit">
    </div>
</form>

脚本:

$("#contact" ).on("submit", function () {
    var data = {
        email: $("#email").val()
    };

    $.post("test.php", data, function (response) {
        $('#success').html(response);
    });

    return false;
});

では、応答でもある をtest.php実行するだけです。print_r($_POST)次のようなものが出力されます。

Array
(
    [email] => test
)

お役に立てれば。

于 2013-09-29T14:46:08.850 に答える