我想使用 express 和 jquery 實作 AJAX。
index.ejs
<script>
const increment = () => {
let value = parseInt(document.getElementById('number').value);
value = isNaN(value) ? 0 : value;
value ;
document.getElementById('number').value = value;
console.log(document.getElementById('number').value) <== returns correct number
}
</script>
<button type="button" onclick='increment()'>add</button>
<form action="/dash" method="POST" id="mon">
<input id="number" name='number' value=<%=money %>>
<button type="submit">submit</button>
</form>
index.js
router.post('/dash', isLogin, async (req, res) => {
const num = req.body.number;
const filter = {username: req.user.username};
const update = {money: num};
await User.updateOne(filter, update);
console.log(num) <== also returns correct number
res.redirect('/dash')
})
并且,當單獨(沒有 jquery)運行完美時,它會回傳正確的數字并將其保存到 db。
當我將 jquery 代碼添加到腳本時,問題就出現了。
index.ejs的script標簽中的JQuery 代碼:
$(document).ready(function () {
$("form#mon").on('submit', function (e) {
e.preventDefault();
var data = $('input[name=number]').val();
console.log(data)
$.ajax({
type: 'post',
url: 'dash',
data: data,
dataType: 'text',
})
.done(function (data) {
var num = $('input[name=number]').val();
console.log(num)
$('input[name=number]').val(num);
});
});
});
基本上它也可以作業,單擊按鈕時不會重繪 頁面,但是現在console.log(req.body.number)inindex.js回傳未定義,并且不會保存在db中。
謝謝您的回答。
uj5u.com熱心網友回復:
表單資料由一系列鍵=值對組成。
你有:
var data = $('input[name=number]').val();
所以你發送的資料是一個沒有鍵的值。
你需要:
var data = {
number: $('input[name=number]').val();
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/363770.html
標籤:javascript 查询 节点.js 表达
