[英]Data not getting pushed to firebase (inconsistent behaviour)
我正在嘗試在 firebase 數據庫中推送可疑記錄,一切正常,但推送部分似乎不起作用。 它很少起作用,不是每次都起作用。 這是函數:
async function storeSuspectData() {
var name = document.getElementById("name").value;
var height = document.getElementById("height").value;
var weight = document.getElementById("weight").value;
var idnumber = document.getElementById("idnumber").value;
var dob = document.getElementById("dob").value;
var crime = document.getElementById("crime").value;
var hypo = document.getElementById("hypo").value;
var gender;
if (document.getElementById("male").checked) {
gender = 'male';
}
else if (document.getElementById("female").checked) {
gender = 'female';
}
console.log(sessionStorage.getItem("userKey") + ' ' + name + ' ' + height + ' ' + weight + ' ' + idnumber + ' ' + dob + ' ' + gender + ' ' + crime + ' ' + hypo);
console.log('/users/' + sessionStorage.getItem("userKey") + '/suspectList/');
let token = await database.ref('/users/' + sessionStorage.getItem("userKey") + '/suspectList/');
await token.push().set({
name: name,
height: height,
weight: weight,
idnumber: idnumber,
dob: dob,
gender: gender,
crime: crime,
hypo: hypo,
});
alert('Record added successfully');
}
最后一條警報語句沒有被執行,數據也沒有被推送
這是數據庫
我也在控制台上收到此錯誤,但我沒有在任何地方使用 document.write()
BrowserPollConnection.ts:480 [Violation] Avoid using document.write().
當我單擊調用該函數的按鈕時,頁面正在刷新,因為該按鈕是表單中的提交按鈕。 我明白了
Navigated to file:///D:/MyPrograms/CredibilityAnalyzer/front-end/pages/selectSuspect.html?name=afs&crime=0&height=1&weight=1&idnumber=1&dob=2021-01-01&hypo=asdf&gender=none
這是 HTML 代碼:
<!DOCTYPE html>
<html>
<head>
<title>Credibility Analyzer</title>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700" rel="stylesheet">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.5.0/css/all.css"
integrity="sha384-B4dIYHKNBt8Bc12p+WXckhzcICo0wtJAoU8YZTY5qE0Id1GSseTk6S+L3BlXeVIU" crossorigin="anonymous">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="../style/selectSuspect.css">
<script src="https://www.gstatic.com/firebasejs/8.7.1/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.7.1/firebase-database.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.7.1/firebase-analytics.js"></script>
<script src="../script/form2.js"></script>
</head>
<body onload="fillSuspectList()">
<div class="testbox">
<form>
<div class="banner">
<h1>Credibility Analyzer</h1>
</div>
<div class="btn-block">
<button type="submit" onclick="showInputForm()">Enter new suspect record</button>
<button type="submit" onclick="showSelectSuspect()">Select suspect</button>
</div>
<div class="showInputForm" id="showInputForm" style="display: none;">
<p>Suspect Information</p>
<div class="item">
<label for="name">Name<span>*</span></label>
<input id="name" type="text" name="name" required />
</div>
<div class="btn-block">
<button type="submit" onclick="storeSuspectData()">SUBMIT</button>
</div>
</div>
</form>
</div>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"
integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1"
crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
crossorigin="anonymous"></script>
</body>
</html>
它很少起作用,不是每次都起作用。
這通常表示競爭條件。 在這種情況下,我懷疑您的storeSuspectData
在用戶提交表單時被調用。 如果是這種情況:表單的默認行為是將數據發送到服務器,然后重定向到不同的頁面。 因此,除非您的處理程序函數取消此默認行為,否則頁面將被重定向,這可能/將中斷對數據庫的寫入。
對此的解決方案是通過在觸發它的事件上調用e.preventDefault()
並從處理程序返回false
來取消表單的默認行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.