我试图更新一个简单的字符串与数据库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()
我会在数据库中获得该条目,但是页面已重新加载。
我的目标是在数据库中有一个条目,并避免页面刷新。
您的PHP在这里寻找一个变量phoneNumber_submit
:
if (isset($_POST['phoneNumber_submit'])) {
但是在这里,您的AJAX仅发送一个名为的变量phoneNumber
:
data: {
phoneNumber:phoneNumber,
}
显然,这两个名称不匹配,因此该if
语句永远不会为真,并且查询将永远不会运行。当您不使用AJAX提交表单时name="phoneNumber_submit"
,该按钮就可以使用,因为您具有“提交”按钮,因此该值将发送到服务器。
因此,您可以:
1)将此值硬编码到您的data
参数中:
data: {
"phoneNumber": phoneNumber,
"phoneNumber_submit": true
}
要么
2)只需让jQuery为您完成工作,然后使用序列化函数即可获取您已经在HTML中定义的所有值和名称,并将它们直接发送到服务器,而无需再次指定每个值和名称:
data: $(this).serialize()
注意:由于您要处理表单的“提交”事件this
,因此以上代码将成为您的<form>
元素。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句