[英]PHP and AJAX update data to database
我正在嘗試使用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 為您完成工作,並使用序列化function 來獲取您已經在 HTML 中定義的所有值和名稱,然后再指定每個值和名稱,而無需您再次指定:
data: $(this).serialize()
注意:上面代碼中的this
將是您的<form>
元素,因為您正在處理表單的“提交”事件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.