通过ajax将jquery var传递给php?

时间:2013-02-11 15:41:52

标签: php jquery ajax

我有一个表单,使用php通过电子邮件发送自己的查询。我有一些jquery将细节填入div中,

如何通过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('');
}

2 个答案:

答案 0 :(得分: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是函数的输出。只需在现有函数的末尾添加它..

答案 1 :(得分: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();
        }
    }
});

你处理PHP文件的AJAX看起来像这样。

PHP:

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

只是想知道如何解决这个问题!

您需要自己做一些验证和过滤!