2

似乎表单提交(到同一页面 - 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>  

alert("status = " + status);javascript 部分弹出状态sucess为 .

更新

这是contact.php顶部的PHP部分

<?php
  if(isset($_POST["message"])){
    echo '<script>alert("some dummy text");</script>';
  };
?>  

不仅 echo 不打印任何内容,而且我无法从发布的数据中访问值。PHPMailer 可以很好地手动分配文本到参数。

4

6 回答 6

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>';
  };
?> 
于 2013-06-20T06:20:42.100 回答
1

既然你问的是评论的答案

好吧,看起来不错,但是您也可以尝试

$('#contactform').serialize();

为您获取所有表单值,既然您问了,那么确定表单已提交的更好方法是什么,在这种情况下,您可以检查submit按钮而不是文本框或其他可能的表单字段留空,所以你可以使用

if( isset( $_POST['submitbtn'] ) ) {
    // process the form
}
于 2013-06-20T18:12:26.783 回答
1

如果 $_POST 返回空数据。确保您没有任何导致此问题的 htaccess。我曾经遇到过这个问题。我的 htaccess 总是清空帖子数据。修改 htaccess 后,我的问题解决了。

于 2013-06-20T06:07:26.040 回答
0

执行以下操作: 1) 为 li 类按钮的子项的输入标签提供 id 或类

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...

希望这可以帮助您解决问题

于 2013-06-20T06:21:54.847 回答
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;
    });
});

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

于 2013-06-20T06:37:44.457 回答
0

将您的帖子值保存在变量中。例如:

$name = $_POST["name"];

您可以在脚本中回显此变量:

var name ="<?php echo $name; ?>";
于 2013-06-20T05:48:28.477 回答