0

我有一个表格,它使用 php 向自己发送电子邮件询问。我有一些将详细信息填写到 div 中的 jquery,

如何通过 ajax 将 Jquery var 传递给 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

3

1)制作一个隐藏的输入字段。2) 将 jQuery var 内容传递给隐藏的输入字段

$('.selector').change(function(){
    //replace the value here.
});

3) 使用 $_POST['hiddenname'] 在 php 中获取它

E:这里是一个例子:http: //jsfiddle.net/yLuNu/4/

它使用下拉菜单将值存储在隐藏字段中。您可以使用任何输出并将其存储在隐藏字段中。

E2:由于我并没有真正得到您想要传递给隐藏字段的内容:如果您有一个函数并且只想将输出保存在隐藏字段中:

你到底想传递给你的脚本什么?我看到了一个复选框,所以我认为您想使用更改功能。如果您只想返回函数的输出

$('input#hiddenfield').val($VAR)

而 var 是函数的输出。只需将其添加到现有功能的末尾即可。

于 2013-02-11T15:50:31.440 回答
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 回答