我知道(從這個)我可以明確地將它傳遞給之前的值轉換為整數JSON.stringify。但是當您想要序列化表單資料時,這種方法沒有用。我有一個通用代碼:
let myform='#my_form_id`;
$(myform).submit(function(event) {
event.preventDefault();
const formData = new FormData($(myform)[0]);
const json = JSON.stringify(Object.fromEntries(formData));
ws.send(json); // send over websocket
});
而且我真的不想在序列化之前手動將每個欄位轉換為適當的型別。這違反了“寫得很好的”代碼的所有規則。
那么,如何序列化 JSON 中的表單欄位以保留其本機資料型別?
uj5u.com熱心網友回復:
您可以映射輸入并使用switch case來選擇回傳的資料和型別。
$('form').on('submit', function(e) {
e.preventDefault();
let json = JSON.stringify($(this).find('input').get().map(function(input){
switch (input.type) {
case 'checkbox':
case 'radio': return input.checked; break;
case 'number':
case 'range': return (input.value || 0); break;
default: return input.value || ''
}
}));
$('.json').html(json);
});
<form>
<div>
<input>
<input type="number">
<input type="checkbox">
<input type="radio">
<input type="color">
<input type="date">
<input type="range">
</div>
<div>
<input>
<input type="number">
<input type="checkbox">
<input type="radio">
<input type="color">
<input type="date">
<input type="range">
</div>
<button action="submit">SERIALIZE</button>
</form>
<p class="json"></p>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/353749.html
標籤:javascript html 查询 json 连载
