我正在尝试在提交表单后使用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
答案 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
}