我有一个表单,使用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('');
}
答案 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);
?>
只是想知道如何解决这个问题!
您需要自己做一些验证和过滤!