0

jQueryのAJAXメソッドで使用しているPHPの連絡先フォームがありますが、「success:」関数で非常に奇妙な結果が得られます。

PHPのお問い合わせフォームは次のとおりです。

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$number = $_POST['number'];
$message = $_POST['message'];
$msg = "Name: $name\n";
$msg .= "Email: $email\n";
$msg .= "Number: $number\n\n";
$msg .= "$message\n";
$recipient = "[recipients here]";
$subject = "Contact Us - $name";
$mailheaders = "From:$email";
$success = mail($recipient, $subject, $msg, $mailheaders);

if ($success) {
    echo ('Correct');
} else {
    echo ('Failed');
}
header("Location: [website address here]");
?> 

jQueryAJAXメソッドは次のとおりです。

$("#contact-form").submit(function (event) {
    $.ajax({
        type: "POST",
        url: '/lib/mailer.php',
        data: {
            name: $("#name").val(),
            email: $("#email").val(),
            number: $("#number").val(),
            message: $("#message").val()
        },
        success: function (data) {
            //$("#contact-form")[0].reset();
            alert(data);

            if(data === 'Correct') {
                alert('Data is correct');
            }
            else if (data !== 'Correct') {
                alert('Data is not equal to correct');
            }
            else {
                alert('Else statement');
            }
        }
    });

    event.preventDefault();
    return false;
});

ここで、フォームに入力して[送信]をクリックすると、PHPは適切なデータを受信し、電子メールを正常に送信し、エコーの「正しい」を送信します。「正解」というアラートがポップアップ表示されます。しかし、次のアラートが「データは正しい」ではなく、「データは正しいと等しくない」です。

それが起こるためにここで何が起こっているのか私にはわかりません。私はどこかで本当にばかげた間違いをしているに違いないと思いますが、それを理解できないようです。

4

3 に答える 3

1

ajax通話からリダイレクトすることはできません。関数を使用している場合はheader、ajaxで多くのヘッダーデータが出力されます。

ヘッダーデータはStrange Resultあなたが得ているものです...

削除するheader("Location: [website address here]");

そして、成功後にリダイレクトしたい場合は、ajax successブロックでこのようにします

if (data == "Correct") {
    window.location = '[website addresss here]';
}
于 2013-01-16T06:28:06.230 に答える
1

単語と一致していません。使用する

if($.trim(data) == 'Correct')

それがお役に立てば幸いです。

于 2013-01-16T06:31:19.617 に答える
0

ページheader("Location: [website address here]")から削除するmailer.php

$.ajax({
        type: "POST",
        url: '/lib/mailer.php',
        data: {
            name: $("#name").val(),
            email: $("#email").val(),
            number: $("#number").val(),
            message: $("#message").val()
        },
        async:false, //  <---- Add this fella here
        success: function (data) {
            //$("#contact-form")[0].reset();
            alert(data);

            if(data === 'Correct') {
                alert('Data is correct');
            }
            else if (data != 'Correct') {
                alert('Data is not equal to correct');
            }
            else {
                alert('Else statement');
            }
        }
    });
于 2013-01-16T06:41:34.450 に答える