В следующей форме я пытался пройти через функцию Ajax, а не через действие / PHP.
<section class="registration">
<form name="userRegistration" method="post" id="userregister" action="install.php">
<label for="username">Username</label>
<input type="text" name="username" id="username" value="admin"><label for="username">Author Name</label>
<input type="text" name="authname" id="authname" placeholder="Example: John Doe"><label for="password">Password</label>
<input type="password" name="pass" id="pass" value=""><label for="sitetitle">Site Title</label>
<input type="text" name="sitetitle" id="sitetitle" ><label for="sitedesc">Site Description</label>
<input type="text" name="sitedesc" id="sitedesc" ><label for="server">Server</label>
<input type="text" name="server" id="server" placeholder="Example: localhost"><label for="database">Database</label>
<input type="text" name="database" id="database" ><label for="dbun">DB Username</label>
<input type="text" name="dbun" id="dbun" ><label for="dbpw">DB Password</label>
<input type="password" name="dbpw" id="dbpw" >
<input type="submit" />
</form>
Ниже приведен мой Ajax-код для этого.
$(document).on('submit', '#userregister form', function(e) {
$.ajax({
url: $(this).attr('action'),
type: $(this).attr('method'),
data: $(this).serialize(),
success: function(html) {
alert('ok');
}
});
e.preventDefault();
});
Но вместо того, чтобы предотвратить дефолт, форма, кажется, полностью игнорирует все и пропускает через действие, и я не слишком уверен, почему. Реальные функции install.php работают правильно, но я просто озадачен, почему он не проходит через Ajax.
preventDefault
остановил всплывающее событие, но отменил собственное событие. Вы должны вернуться false
от вашей функции для отмены поведения по умолчанию (открытие формы URL):
$(document).on("submit", "#userregister form", function (e) {
$.ajax({
url: $(this).attr('action'),
type: $(this).attr('method'),
data: $(this).serialize(),
success: function(html) {
alert('ok');
}
});
e.preventDefault();
return false;
});
Также лучше практиковать обработку кнопки sumbit click
, но создайте событие «отправить».
Других решений пока нет …