使用ajax运行php脚本显示无结果

时间:2015-03-01 15:27:30

标签: javascript php jquery ajax forms

我正在尝试在提交表单后使用php运行ajax脚本。 这是表格

<form id="form" class="form">
    <input id="email" type="email" required name="email" placeholder="Email" onchange="myUpdateFunction()" value="">
    <textarea id="message" type="text" value="" name="message" onchange="myUpdateFunction()" required placeholder="Comments" style="border:none;border-bottom:1px solid #424242; width:530px;"></textarea>
    <input id="submit" type="submit" class="submit" name="send_request" value="Submit" >
</form>

这是我的剧本

$('.submit').on('click', function() {
        $.ajax({
          url: "send.php",
          method:'post',
          data: {'email': $('#email').val(), 'message': $('#message').val()}
        }).done(function() {
            alert('Message Sent.');

        });
   });

这是我的send.php文件

<?php 

if(isset($_POST['send_request'])){
    //send email
}

?>

但它不起作用,页面重新加载,电子邮件没有发送,也没有显示“警告信息”

在php中没有问题,因为如果我删除了javascript并且我添加了action =“send.php”method =“POST”作为其工作形式的属性,那么我认为问题是javascript

1 个答案:

答案 0 :(得分:2)

http://jsfiddle.net/o5xvpkmv/2/

你不应该对这种东西使用onchange或click事件,而是使用submit事件(防止提交按钮的默认行为)。

<form id="form" class="form">
    <input id="email" type="email" name="email" placeholder="Email" required>
    <textarea id="message" type="text" value="" name="message" placeholder="Comments" required></textarea>
    <input id="submit" type="submit" class="submit" name="send_request" value="Submit">
</form>


$("#form").on('submit', function(e) {
    e.preventDefault();
    $.ajax({
       url: "send.php",
       method:'post',
       data: $( this ).serialize()
     }).done(function() {
         alert('Message Sent.');
     });
});

或(两种方式都很好)

$(document).ready(function () {
    $('#submit').click(function () {
        $.ajax({
            url: "send.php",
            method: 'post',
            data: $(this).serialize()
        }).done(function () {
            alert('Message Sent.');
        });
        return false;
    });
});

另外,关于后端,你应该进行这种检查:

if (
    isset($_POST["email"]) && 
    !empty($_POST["email"]) &&
    isset($_POST["message"]) && 
    !empty($_POST["message"])) {
        //send email   
}