#javascript #jquery #sql #node.js #ajax
#javascript #jquery #sql #node.js #ajax
Вопрос:
Когда я выбрал службу из select input, я получил div, созданный JS, как показано ниже:
<form method="POST" action="/booking/success">
// SOME CODE IN HERE.................................
<div class="col-12">
<h3 class="service__title" name="serviceTitle">Service 1</h3>
<p><span class="display__number">1</span> x <span>500</span></p>
<p><b class="display__total">500</b></p>
</div>
<div class="col-12">
<h3 class="service__title" name="serviceTitle">Service 2</h3>
<p><span class="display__number">1</span> x <span>1500</span></p>
<p><b class="display__total">1500</b></p>
</div>
<button type="submit" class="btn btn-right" id="submitBtn" ><span>SUBMIT </span><i class="fas fa-paper-plane"></i></button>
</form>
Я создаю переменную Ajax для использования в Nodejs:
<script>
<script>
$("button[type='submit']").click(function (){
var length = $('.service__title').length;
var data = [];
alert($('.service__title:eq(0)').text());
alert(parseInt($('.display__number:eq(0)').text()));
for(let i = 0; i < length; i ){
data.push({
title: $('.service__title:eq(i)').text(),
quantity: parseInt($('.display__number:eq(i)').text()),
subtotal: parseInt($('.display__total:eq(i)').text())
})
}
$.ajax({
async:false,
url: "../booking/success",
type: "POST",
dataType: "html",
data: {data:data},
contentType: "application/x-www-form-urlencoded",
})
});
</script>
и журнал консоли:
app.post('/booking/success', async (req,res)=> {
console.log(req.body);
console.log(req.body.data);
res.render("success");
})
Когда я нажал «Отправить», мой массив «данные» не определен.
{ data:
[ { title: ' ', quantity: 'NaN', subtotal: 'NaN' } ]
[ { title: ' ', quantity: 'NaN', subtotal: 'NaN' } ]
Пожалуйста, помогите мне!
Комментарии:
1. Просто опечатка, которую вы не напечатали
i
eq
, т.е. значение внутри :' i '
Ответ №1:
Вы не должны определять dataType
as html
в своем Ajax
запросе, потому что вы отправляете данные в формате JSON. Вам также не нужно указывать contentType
.
попробуйте с этим :
$.ajax({
async:false,
url: "../booking/success",
type: "POST",
data: {data:data},
})
Ответ №2:
Когда я вставил объект в массив для цикла, мой массив был неопределенным
Но когда я нажимал нормально, мой массив получал объект
Я думаю, что в цикле есть проблема:((