表单似乎提交(到同一页面 - contact.php
),但我无法使用发布的数据,例如$_POST["message"]
。似乎它们是空的(我试图回应它们而没有打印出来)。
这是JavaScript(在页面的主题部分):
$(document).ready(function (){
$('#contactform').submit(function(){
var action = $(this).attr('action');
$.post("contact.php", {
name: $('#name').val(),
email: $('#email').val(),
company: $('#company').val(),
subject: $('#subject').val(),
message: $('#message').val()
}, function(data,status){
alert("status = " + status);
$('#contactform #submit').attr('disabled','');
if(data=='Message sent!') $('#contactform').slideUp();
});
return false;
});
});
这是形式:
<form action="contact.php" method="post" id="contactform">
<ol>
<li>
<label for="name">First Name <a href="#">*</a></label>
<input name="name" id="name" class="text">
</li>
<li>
<label for="email">Your e-mail <a href="#">*</a></label>
<input id="email" name="email" class="text">
</li>
<li>
<label for="company">Company Name</label>
<input id="company" name="company" class="text">
</li>
<li>
<label for="subject">Subject<br>
</label>
<input id="subject" name="subject" class="text">
</li>
<li>
<label for="message">Message <a href="#">*</a></label>
<textarea id="message" name="message" rows="6" cols="50"></textarea>
</li>
<li class="buttons">
<input type="image" name="submitbtn" id="submitbtn" src="images/but_send_message.gif">
</li>
</ol>
</form>
javascript上的alert("status = " + status);
部分会将状态弹出为sucess
。
更新
这是PHP部分位于contact.php
的顶部<?php
if(isset($_POST["message"])){
echo '<script>alert("some dummy text");</script>';
};
?>
不仅回声不会打印任何内容,而且我无法访问已发布数据的值。 PHPMailer可以正常使用手动分配的文本到参数。
答案 0 :(得分:1)
如果$ _POST返回空数据。确保你没有任何导致此问题的htaccess。 我曾经遇到过这个问题。我的htaccess总是清空帖子数据。在修改了htaccess后,我解决了问题。
答案 1 :(得分:1)
只需尝试使用此代码发布表单并检查是否会在contact.php上获取$ _POST
<script type="text/javascript">
$(document).ready(function (){
$("#submitbtn").click(function(){
$("#contactform").attr("action" , "contact.php");
$("#contactform").submit();
});
</script>
如果你在contact.php中获得$ _POST,那么显示成功消息
<?php
if(isset($_POST["message"])){
echo '<script>alert("some dummy text");</script>';
};
?>
答案 2 :(得分:1)
嗯,看起来很好,但也可以尝试
$('#contactform').serialize();
为您获取所有表单值,因为您问过,确定表单已提交的更好方法是什么,在这种情况下,您可以检查submit
按钮而不是文本框或其他可以留空的表单字段,所以你可以使用
if( isset( $_POST['submitbtn'] ) ) {
// process the form
}
答案 3 :(得分:0)
将您的帖子值保存在变量中。例如:
$name = $_POST["name"];
您可以在脚本中回显此变量:
var name ="<?php echo $name; ?>";
答案 4 :(得分:0)
执行以下操作: 1)为li class按钮的孩子输入标签提供id或class
2)然后在jquery中编写一个代码来处理:
$('.inputButton').click(function(){
var data = $('#contactform').serializeArray();
$.each(data, function(key, field) {
// Perform your validations over the data here
console.log('field Name == '+field.name+', field value == '+field.value);
});
// Make an ajax call using this data
$.post("contact.php", data, function(returnData) {
// Handle your code for after form submission response
});
});
3)然后在PHP中,您可以获得值:
$name = $_POST["name"]; // and so on...
希望这可以帮助您解决问题
答案 5 :(得分:0)
$(document).ready(function (){
$('#contactform').serialize(function(){
var action = $(this).attr('action');
$.post("contact.php", {
name: $('#name').val(),
email: $('#email').val(),
company: $('#company').val(),
subject: $('#subject').val(),
message: $('#message').val()
}, function(data,status){
$('#contactform #submit').attr('disabled','');
if(data=='Message sent!') $('#contactform').slideUp();
});
return false;
});
});
现在工作正常!感谢其他用户提出了可能适用于此案例的替代解决方案,但是当我找到解决方案时,无需检查它们。