JavaScript表单提交,但发布PHP中不可用的数据

时间:2013-06-20 05:38:02

标签: php jquery forms form-submit

表单似乎提交(到同一页面 - 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可以正常使用手动分配的文本到参数。

6 个答案:

答案 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)

正如Sheikh heera在他对我的问题的评论中提到的那样,我试过这个:

$(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;
    });
});

现在工作正常!感谢其他用户提出了可能适用于此案例的替代解决方案,但是当我找到解决方案时,无需检查它们。