0

Ajax to PHP を使用して配列を解析し、配列の値を含むメールを送信するときに問題が発生しました。

Ajax コード:

    $(document).ready(function(){

            $("#submit-button").click(function(){

                var countryArray = ['Location Zero', 'Location One', 'Location Two'];

                dataString = countryArray; 
                var jsonString = JSON.stringify(dataString);

                $.ajax({
                        type: "POST",
                        url: "sendmail.php",
                        data: {countries: jsonString},
                        success: function (msg) {

                            $("#errors").text("Thank you for getting in touch, we will get back to you!");

                        },
                        error: function (msg) {
                            $("#errors").text("Error sending email, please try again.");

                            alert("error");
                        }
                    });


});

});

PHP コード:

<?php


        $to = "abc@abc.com";
        $countries = json_decode($_POST['countries']);

        $header = "Content-Type: text/html\r\nReply-To: \r\nFrom:  <>";
        $subject = "Email from the Lister customer";

        $body = @"$countries";


        if(mail($to, $subject, $body, $header)) {
            die("true");    
        } else {
            die("There was an error sending the email.");   
        }


?>

しかし、からの電子メールで取得している$countriesのは、値ではなく「配列」という単語だけです。

誰でも助けてもらえますか?

4

3 に答える 3

3

$countries配列です。にリストとして表示する場合は$body、次のようにします。

$body = implode(', ', $countries);

また、 () PHP エラーを抑制しないようにしてください@。将来、さらに頭痛の種になります。

于 2013-06-11T14:42:07.790 に答える
0
<?php


    $to = "abc@abc.com";
    $countries = json_decode($_POST['countries']);

    $header = "Content-Type: text/html\r\nReply-To: \r\nFrom:  <>";
    $subject = "Email from the Lister customer";

    $body = implode(", ", $countries);


    if(mail($to, $subject, $body, $header)) {
        die("true");    
    } else {
        die("There was an error sending the email.");   
    }
?>
于 2013-06-11T14:42:21.713 に答える
0

jquery を使用している場合は、 stringify の代わりに.serializeArray()を使用してみてください。

また、$_POST['contries'] 変数を受け取るときは、内破する必要があります。これを試して:

$(document).ready(function(){
    $("#submit-button").click(function(){
        var countryArray = ['Location Zero', 'Location One', 'Location Two'];
        $.ajax({
            type: "POST",
            url: "sendmail.php",
            data: {countries: countryArray.serializeArray()},
            success: function (msg) {
                $("#errors").text("Thank you for getting in touch, we will get back to you!");
            },
            error: function (msg) {
                $("#errors").text("Error sending email, please try again.");
                alert("error");
            }
        });
    });
});

次に、PHP でこれを使用して、国の値を適切に取得します。

implode(', '.$countries);
于 2013-06-11T14:56:05.467 に答える