【发布时间】:2020-09-22 15:15:22
【问题描述】:
我正在尝试使用PHP 和AJAX 将一个简单的字符串更新到数据库中。
代码如下:
HTML
<form id="phoneNumberForm" class="form-inline" method="post" enctype="multipart/form-data">
<div class="form-group mx-sm-3 mb-2 align-content-center">
<label for="phoneNumber" class="sr-only">Phone</label>
<input type="text" class="form-control" name="phoneNumber" id="phoneNumber" placeholder="Phone">
</div>
<button type="submit" name="phoneNumber_submit" id="phoneNumber_submit" class="btn btn-primary mb-2">Save</button>
<div id="phoneSuccess"></div>
</form>
PHP
if (isset($_POST['phoneNumber_submit'])) {
$phoneNumber = $_POST['phoneNumber'];
$profileEditAdmin = $db->query('UPDATE users SET user_phone = ? WHERE user_name = ?', $phoneNumber, $_SESSION['user_name']);
}
AJAX
$('#phoneNumberForm').submit(function(e) {
e.preventDefault();
let phoneNumber = $('#phoneNumber').val();
let $body = $("body");
$(document).on({
ajaxStart: function() { $body.addClass("loading"); },
ajaxStop: function() { $body.removeClass("loading"); }
});
$.ajax({
type: "POST",
data: {
phoneNumber:phoneNumber,
},
success: function() {
$('#phoneSuccess').html('<p>Saved.</p>');
setTimeout(function() {
$('#phoneSuccess').fadeOut();
}, 2000)
}
});
});
当我删除 preventDefault() 时,我在数据库中获得了条目,但页面被重新加载。
我的目标是在数据库中有一个条目并避免页面刷新。
【问题讨论】:
-
您的 ajax 代码中没有 url 参数。
-
你需要它来请求php页面。
-
@Marko 在提交事件函数末尾添加
return false,它将阻止刷新您的页面。 -
@turivishal 这已经由
e.preventDefault()实现 - 请参阅api.jquery.com/event.preventDefault -
@ADyson 感谢感谢