Я пытаюсь создать страницу настроек пользователя, где пользователь вводит свою информацию, нажимает «сохранить», затем страница сохраняет данные без очистки введенных полей или перезагрузки страницы.Лучший пример, который я могу вспомнить, это страница настроек учетной записи пользователя в Udemy.
Множество похожих вопросов, на которые я смотрел, используют php
или отображают данные в div
ниже form
.Я хочу, чтобы данные оставались в form inputs
.Я использую nodejs
, express
, bodyparser
.
<form id="updateAccSettings" action="/account" method="POST">
<div class="form-group">
<label for="address">Address* </label>
<input class="form-control" type="text" name="address" placeholder="Address" required/>
</div>
<div class="form-group">
<label for="address2">Address 2 </label>
<input class="form-control" type="text" name="address2" placeholder=""/>
</div>
<div class="form-group">
<label for="city">City* </label>
<input class="form-control" type="text" name="city" placeholder="City" />
</div>
<div class="form-group">
<input type="submit" name="save" class="btn btn-lg btn-primary btn-block" value="Save"/>
</div>
</form>
Я пробовал это с AJAX
$(document).ready(function() {
$("#updateAccSettings").on("submit", function(e){
e.preventDefault();
var details = $("#updateAccSettings").serialize();
$.post("/account", details, function(data){
$("#updateAccSettings").html(data);
});
});
});
и этим
$(document).ready(function () {
$("#updateAccSettings").bind("submit", function(e){
e.preventDefault();
$.ajax({
type: "POST",
url: "/account",
data: $("#updateAccSettings").serialize(),
success: function(){
alert("You've successfully updated your account settings.")
}
});
});
});
И у меня есть это для моего app.js
app.post("/account", function(req, res) {
var address = req.body.address;
var address2 = req.body.address2;
var city = req.body.city;
var updateAccount = {address: address, address2: address2, city: city};
account.push(updateAccount);
console.log("Updated data");
res.redirect("/settings/account");
});
Когда я нажимаю save
, я получаю Cannot read property of 'push' undefined
.Я попытался удалить var address
, var address2
и т. Д. И сохранить только console.log
, который регистрирует всякий раз, когда я нажимаю сохранить, но не сохраняет данные во входных данных.Я попытался добавить onsubmit="return false"
в качестве атрибута к тегу form
, но console.log
не запускается, когда я нажимаю сохранить, поэтому я предполагаю, что он ничего не делает с данными.
Не уверен, что делать дальше.Все мои другие формы используют модалы или отображают результаты на другой странице.