0

php を使用して自分宛にメールで問い合わせるフォームがあります。詳細をdivに入力するjqueryがいくつかありますが、

Jquery var を ajax 経由で PHP に渡すにはどうすればよいですか? (それが最善の方法だと読んだことがありますか?)

PHPでメールを送信する方法は次のとおりです。

<? if(isset($_POST['submit'])) { 

$to = "rob@domain.com";
$header = 'From: rob@domain.com';
$subject = "Quotation";
$enquiry_first_name = $_POST['enquiryfirstname'];
$enquiry_last_name = $_POST['enquirylastname'];
$enquiry_title = $_POST['enquirytitle'];
$enquiry_organisation = $_POST['enquiryorganisation'];
$enquiry_address = $_POST['enquiryaddress'];
$enquiry_country = $_POST['enquirycountry'];
$enquiry_email_address = $_POST['enquiryemailaddress'];
$enquiry_telephone = $_POST['enquirytelephone'];
$enquiry_additional_comments = $_POST['enquiryadditionalcomments'];

$body = "You have an quote request from the website:

Name: $enquiry_title $enquiry_first_name $enquiry_last_name 
Type of organisation: $enquiry_organisation 
Address: $enquiry_address, $enquiry_country
E-Mail: $enquiry_email_address 
Tel: $enquiry_telephone
Comments: $enquiry_additional_comments

Kind regards";

mail($to, $subject, $body, $header);

echo "Thank you for your enquiry.";

} ?>

データをdivに出力しているjqueryは次のとおりです。

function makeSummary() {
    var summary = [];
    $steps.not(":last").each(function (i, step) {
        $step = $(step);
        summary.push('<p><b>' + $step.data('name') + '</b></p>');
        var $ch = $step.find('input[type="checkbox"]:checked');
        if (!$ch.length) {
            summary.push('<p>No items selected</p>');
        } else {
            $ch.each(function (i, ch) {
                summary.push('<p>' + $(ch).val() + '</p>');
            });
        }
    });
    return summary.join('');
}
4

2 に答える 2

0

フォームを送信する前に、AJAX を使用して非表示の入力をフォームにレンダリングするだけです。

Javascript:

$.ajax({
    url:'/my/url',
    type: 'POST',
    dataType: 'json',
    data: {
        "some-var": "some-value"
    },
    context: $('form#my-form'), // now use $(this) inside event functions
    complete: function(jqXHR, textStatus) {
        console.log(jqXHR.responseText);
        //this function gets called every time (not only on success or error)
    },
    error: function(jqXHR, textStatus, errorThrown) {
        console.log(jqXHR.responseText);
        //do something if call fails!
    },
    success: function(data, textStatus, jqXHR) {
        if(data && data.value) {
            if($(this).find("#my-field").length) {
                 $(this).find("#my-field").val(data.value);
            }
            else {
                $hidden = $("<input>")
                          .attr("type", "hidden")
                          .attr("name", "my-field")
                          .val(data.value);
                $(this).append($hidden);
            }
            //submit form 
            $(this).submit();
        }
    }
});

AJAX 処理の PHP ファイルは次のようになります。

PHP:

<?php
    $data = array(
        "value" => "default"
    );
    if($_POST["some-var"]=="some-value") {
        $data = array(
            "value" => "something"
        );
    }
    echo json_encode($data);
?>

これを解決する方法を教えてください!

自分で検証とフィルタリングを行う必要があります。

于 2013-02-11T16:29:24.567 に答える