繁体   English   中英

我的$ .post函数不返回任何数据

[英]My $.post function doesn't return any data

我是Php和Ajax的新手,我一直在为这个问题而烦恼。 我正在尝试使用$.post速记函数来使用ajax更新我的简单表单,但是我的脚本只是不返回任何内容。 我也尝试过$.ajax ,并使用了不同的数据类型,例如json对象,json变量, serialize()等。


的HTML

    <section class="contact" id="contact">



  <h2>Do you have a project in mind? Let's discuss it</h2>

    <div id="form-messages">

    </div>


   <form action="" method="post" id="contact-form">

        <div class="row">
            <div class="col span-1-of-4"><label for="name">Your name</label></div>
            <div class="col span-3-of-4"><input type="text" name="name" id="name" placeholder="Enter your name ..."></div>
        </div>

        <div class="row">
            <div class="col span-1-of-4"><label for="email">Your email</label></div>
            <div class="col span-3-of-4"><input type="email" name="email" id="email" placeholder="Enter your email ..."></div>
        </div>

        <div class="row">
            <div class="col span-1-of-4"><label for="message">Your message</label></div>
            <div class="col span-3-of-4"><textarea name="message" id="message" placeholder="Type in your message ..."></textarea></div>
        </div>

        <div class="row">
        <div class="col span-1-of-4"></div>
            <div class="col span-3-of-4"><input type="submit" name="submit" id="submit" value="Send your message"></div>

        </div>
    </form>




</section>

的PHP

<?php           

$name= $_POST['name'];
$email= $_POST['email'];
$message= $_POST['message'];
$error="";
$result="";

if (isset($_POST["submit"])) {
if (!$name) {
    $error="<br />Please enter your name";
}
if (!$email) {
    $error.="<br />Please enter your email address";
}
if (!$message) {
    $error.="<br />Please enter a message";
}

if ($_POST['email']!="" AND !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
        $error.="<br />Please enter a valid email address";
    }                       
if ($error) {
    $result='<div class="error-message"><p id="alert"><strong>There were error(s) in your form:</strong>'.$error.'</p></div>';
} else {
    if (mail("abderrahim.gadmy@gmail.com", "Gadmy Visions: Someone sent you a message!", 
    "Name: ". $_POST['name']."
    Email: ".$_POST['email']."
    Comment: ".$_POST['message'])) {
        $result='<div class="success-message"><p id="alert"><strong>Thank you!</strong> I\'ll be in touch</p></div>';
    } else {                                                 
        $result='<div class="error-message"><p id="alert">Sorry, there was an error sending your message. Please try again later.</p></div>';
    }
}

 echo $result;
}

?>

JS

$(document).ready(function(){
            $('#contact-form').on('submit',function(event){



    $.post('contact.php',$('form').serialize(), function(data){
        $('#form-messages').html(data);        
    });

    //Prevent refresh
    event.preventDefault();      

    });

});

长话短说:

jQuery serialize()不会序列化按钮(因为它不知道使用哪个按钮来提交表单)。 请参阅: 链接以及jQuery序列化文档

注意:只有“成功控件”才被序列化到字符串。 由于没有使用按钮提交表单,因此没有序列化提交按钮的值。

由于您的PHP文件仅在设置$_POST["submit"]时才生成输出(不是这种情况,因为它没有与表单的其余部分一起序列化),因此实际上不会返回任何内容。

在您的php文件中使用其他条件来检查表单是否实际上已成功过帐,或者将提交按钮手动附加到序列化数据中。

尝试检查是否可以使用提交表单

if($ _ SERVER ['REQUEST_METHOD'] ==“ POST”)而不是使用isset($ _ POST [“ submit”])))。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM