Я написал два куска кода, чтобы узнать, как jQuery и ajax работают вместе. Первый сценарий передает данные формы второму сценарию для дальнейшей обработки, а затем возвращает данные обратно вызывающему сценарию. Сценарий смог захватить и передать электронную почту, используя isset(_POST["email"]
. Однако он не смог захватить событие отправки (isset(_POST["email"]
не будет захватывать отправку).
Я понимаю, что излишне пытаться перехватить событие отправки. Поскольку только при нажатии кнопки подтверждения будет вызван второй скрипт. Интересно, если это причина, по которой jQuery / ajax не поддерживает захват события отправки.
1-й сценарий:
<html>
<head>
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
</head>
<body>
<form id="form" method="post">
<span id="error" name="error"></span>
<div><input type="text" id="email" name="email"></div>
<div><input type="submit" id="submit" name="submit" value="submit"></div>
</form>
</body>
</html>
<script>
$(document).ready(function(){
$('#form').on('submit', function(event){
event.preventDefault();
$.ajax({
url:"test4.php",
method:"POST",
data:$(this).serialize(),
dataType:"json",
beforeSend:function()
{
$('#submit').attr('disabled','disabled');
},
success:function(data)
{
if(data.success) {
window.location = "http://localhost/index.php";
}
else
{
$('#submit').attr('disabled', false);
$('#error').text('error');
}
}
})
});
});
</script>
2-й сценарий:
<?php
if(isset($_POST["submit"]))
{
$data = array(
'success' => true
);
}
echo json_encode($data);
?>