3 回答

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超10個(gè)贊
獲取完整的表單數(shù)據(jù)作為數(shù)組和json字符串化它。
var formData = JSON.stringify($("#myForm").serializeArray());
您可以稍后在ajax中使用它?;蛘呷绻銢]有使用ajax; 把它放在隱藏的textarea中并傳遞給服務(wù)器。如果此數(shù)據(jù)通過普通表單數(shù)據(jù)作為json字符串傳遞,則必須使用json_decode對(duì)其進(jìn)行解碼 。然后,您將獲得數(shù)組中的所有數(shù)據(jù)。
$.ajax({ type: "POST", url: "serverUrl", data: formData, success: function(){}, dataType: "json", contentType : "application/json"});

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超6個(gè)贊
HTML無法從表單數(shù)據(jù)生成JSON。
如果你真的想從客戶端處理它,那么你將不得不求助于使用JavaScript:
通過DOM從表單中收集數(shù)據(jù)
將它組織在一個(gè)對(duì)象或數(shù)組中
使用JSON.stringify生成JSON
你可能最好不要堅(jiān)持application/x-www-form-urlencoded
使用服務(wù)器而不是JSON處理數(shù)據(jù)和處理數(shù)據(jù)。您的表單沒有任何可以從JSON數(shù)據(jù)結(jié)構(gòu)中受益的復(fù)雜層次結(jié)構(gòu)。
更新以回應(yīng)重大改寫的問題......
你的JS沒有
readystatechange
處理程序,因此你對(duì)響應(yīng)沒有任何作用單擊提交按鈕時(shí)觸發(fā)JS而不取消默認(rèn)行為。一旦JS功能完成,瀏覽器將以常規(guī)方式提交表單。

TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊
您的代碼很好但從未執(zhí)行過,提交按鈕的原因[type =“submit”]只需用type = button替換它
<input value="Submit" type="button" onclick="submitform()">
在你的腳本里面; 表單未聲明。
let form = document.forms[0];xhr.open(form.method, form.action, true);
添加回答
舉報(bào)