У меня есть следующий код на aap.js с маршрутом к '/ bio_post'. Я пытаюсь опубликовать текст на основе своего веб-сайта с помощью jquery ajax. Проблема, с которой я столкнулся, заключается в том, что jquery выбирает объекты, которые поступают из / bio_post, как неопределенные. Мне было интересно, можете ли вы указать мне правильное направление. Спасибо за ваше время и усилия.
app.post('/bio_post', function (req, res) {
// Get user input value
let update_bio = req.body.user_bio;
// Check if the input isn't empty
if (update_bio !== "") {
// Connect to mysql database
mysql_connection.query("UPDATE users SET user_bio = ? WHERE id = ?", [update_bio, session_id], function (err, rows) {
if (err) {
let obj_error = {err: err};
res.send(obj_error.err);
} else {
// Check if the post was successfully inserted into the database
if (rows.changedRows === 1) {
let id = {id: session_id};
res.redirect("/profile/" + JSON.stringify(id.id));
console.info("bio post id is: " + JSON.stringify(id.id));
/*let msg_success = {id: session_id, success_msg: 'Bio successfully inserted!'};
res.send(msg_success);*/
} else {
let id = {id: session_id};
let msg_error = {msg_err: 'No changes were made to your bio.'};
res.send(JSON.stringify(msg_error.msg_err));
console.info("bio post id is: " + JSON.stringify(id.id));
}
}
});
}else{
//res.render("settings", {u_id: session_id, logged_in_user: session_username, bio: '', bio_msg: "Bio field cannot be empty."});
res.send("Bio field is empty");
}
});
Ниже приведен код для jquery.
/**Set up URL route variable**/
let url = '/bio_post';
/**Set up Ajax callback**/
$.ajax({
url: url,
type: 'POST',
data: {user_bio: user_bio.val()},
success: function (data) {
if (data.msg_err){
success_bio_handler.hide();
error_bio_handler.fadeIn().text(data.msg_err).delay(5000).fadeOut();
} else {
error_bio_handler.hide();
//success_bio_handler.fadeIn().text(data.success_msg).delay(5000).fadeOut();
//window.location.href = '/profile/' + data.id;
console.info(data.id); /***COMES OUT AS UNDEFINED****/
}
}
});
И, наконец, HTML-файл.
<!--ADD OR UPDATE BIO-->
<div id = "add_update_bio_title"><strong>Add or Update Bio</strong></div>
<div id = "add_update_bio_panel">
<form id = "frm_add_update_bio" action = "/bio_post" method = "post"><br />
<div class = "py-5 w-100">
<div class = "row">
<div class = "col-md-4"></div>
<div class = "col-md-4">
<p id = "error_bio_handler" class = "alert-danger collapse">Error</p><!--jQuery error handler-->
<p id = "success_bio_handler" class = "collapse" style = "background-color: #00AA88; color: white;"></p><!--jQuery success handler-->
<form class = "">
<div class = "form-group">
<!--Check if user has entered a bio-->
<div class = "alert-danger"><%= typeof bio_msg !== 'undefined' ? bio_msg : '' %></div><br />
<% if (bio){%>
<textarea class = "form-control" rows = "5" id = "user_bio" name = "user_bio" placeholder = "Write a little something about yourself"><%- bio%></textarea>
<%} else{%>
<textarea class = "form-control" rows = "5" id = "user_bio" name = "user_bio" placeholder = "Write a little something about yourself"></textarea>
<%}%>
</div>
<div class = "form-group"></div>
<div class = "form-group"></div>
<button id = "btnSubmitBio" type = "button" class = "btn btn-primary">Add or Update Bio</button>
</form>
</div>
<div class = "col-md-4"></div>
</div>
</div>
</form>
</div>
<!--END ADD OR UPDATE BIO-->
О, я вижу. Итак, почему он выглядит как undefined, потому что он перенаправляется, и ajax ничего не может найти? Ржу не могу
Так что, полагаю, я не пробовал запускать ваш код. Попробуйте вернуть что-нибудь с помощью res.send, а затем выполните перенаправление на стороне клиента.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Что ж, вы перенаправляете запрос Ajax после успешной вставки, я не думаю, что это может сработать ?