jQuery AJAX没有错误或成功触发

时间:2016-07-09 22:18:01

标签: javascript jquery ajax

我有一个简单的联系表格然后我发布了POST。我正在尝试使用jQuery AJAX数据但由于某种原因我没有得到处理程序的任何响应。这段代码是否正确?



$(document).on("ready", function() {
  $("#contactButton").on("click", function(e) {
    e.preventDefault();

    var data = {
      clientName: $("input").eq(1).val(),
      clientEmail: $('input').eq(2).val(),
      clientMessage: $('textarea').val()
    };

    $.ajax({
      type: 'POST',
      url: 'email.php',
      data: data,
      dataType: 'json',
      success: function(response) {
        $("#contactButton").text("Thank You");
        $("input").val("");
        $("textarea").val("");
      },
      error: function(response) {
        alert("Error: Message Not Sent");
      }
    });
  });
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="contact">
  <input type="text" name="clientName" placeholder="Name" required>
  <input type="email" name="clientEmail" placeholder="Email" required>
  <textarea name="clientMessage" required>Message</textarea>
  <button id="contactButton">Contact</button>
</form>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:1)

问题是因为您没有停止默认表单提交(只是单击按钮),因此在AJAX完成之前页面实际上正在卸载。要解决此问题,您应该挂钩submit的{​​{1}}事件,而不是单击按钮。然后,您可以使用form停止提交。

另请注意,您可以使用表单上的preventDefault()方法获取输入的数据,而不是构建自己的对象。试试这个:

serialize()

答案 1 :(得分:0)

尝试更改

var data = {
    clientName: $("input").eq(1).val(),
    clientEmail: $('input').eq(2).val(),
    clientMessage: $('textarea').val()
};

var data = {
    'clientName': $("input").eq(1).val(),
    'clientEmail': $('input').eq(2).val(),
    'clientMessage': $('textarea').val()
};