我有兩個非常簡單的表單,如下所示:
<form name='a' id='a'> // form a
<input type="text" name="x" id="x"> //input 1
<input type="text" name="y" id="y"> //input 2
<button>submit</button>
</form>
提交表單 a 時,URL 查詢字串將類似于 example.com/?x=1&y=2
<form name='b' id='b' method="POST"> //form b
<input type="hidden" name="sum" id="sum"> // hidden input sum
</form>
我有一個計算腳本代碼,它計算輸入 1 和輸入 2 的總和,然后將總和存盤到“表單 b”中隱藏的“輸入總和”中
<script>
window.addEventListener("DOMContentLoaded", function(){
function calculate(){
// I want it also to work when someone paste the url example.com/?x=1&y=2
const urlParams = new URLSearchParams(window.location.search);
x = urlParams.get('x')
y = urlParams.get('y')
sum = parseInt(x) parseInt(y)
document.getElementById('sum').value = sum //store sum to hidden input
}
calculate()
});
</script>
當有人提交表單 a 或粘貼 URL 時,如何將隱藏的“輸入總和”的值發送到后端(Django)?
如果這樣的事情可行,我更喜歡這樣的事情:
if sum.value not empty:
form_b.submit()
form_b.prevent_page_refresh
我不知道這是否可行或如何在 js 或 ajax 中實作,如果不是,我對所有想法持開放態度。
編輯:在 def 函式計算(){...} 之后的 Ajax 解決方案,并洗掉了第二種形式:
$.ajax({
type:'POST',
url:'{% url "index"%}',
headers: {
'X-CSRFToken': '{{ csrf_token }}'
},
data:{
sum:sum,
},
success: function(){}});
uj5u.com熱心網友回復:
不確定我完全理解你的意思,但我認為這就是你要找的?
const form = document.getElementById('a');
const sumInput = document.getElementById('sum');
function calculate() {
const urlParams = new URLSearchParams(window.location.search);
x = urlParams.get('x');
y = urlParams.get('y');
const sum = parseInt(x) parseInt(y);
sumInput.value = sum;
fetch('http://localhost:8000', {
method: 'POST',
body: JSON.stringify({
value: sum
})
});
}
window.addEventListener("DOMContentLoaded", () => {
calculate()
});
<form name="a" id="a" onsubmit="calculate">
<input type="text" name="x" id="x">
<input type="text" name="y" id="y">
<button>submit</button>
<input type="hidden" name="sum" id="sum">
</form>
基本上,一個計算結果并發布它的簡單表格?那么不確定隱藏輸入有什么用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/329956.html
標籤:javascript 查询 姜戈 阿贾克斯 xmlhttp请求
