Javascript 未使用承诺解析XMLHttpRequest POST表单输入

Javascript 未使用承诺解析XMLHttpRequest POST表单输入,javascript,ajax,promise,xmlhttprequest,ecmascript-6,Javascript,Ajax,Promise,Xmlhttprequest,Ecmascript 6,我正试图在本地服务器上用ES2015承诺实现XHR POST请求。当我使用onsubmit提交表单时,事件服务器不会收到任何数据,就好像表单是空的一样。但是如果在执行承诺之前抛出错误(throw SyntaxError;//或console.log(undefinedVar)),对象数据将按预期发布到服务器。我尝试了setTimeout在onsubmit事件和承诺执行之间引入一点延迟。但即使这样也不行。我尝试了send(newformdata(data))将HtmleElement表单直接作为数

我正试图在本地服务器上用ES2015承诺实现XHR POST请求。当我使用
onsubmit
提交表单时,事件服务器不会收到任何数据,就好像表单是空的一样。但是如果在执行承诺之前抛出错误(
throw SyntaxError;
//或
console.log(undefinedVar)
),对象数据将按预期发布到服务器。我尝试了
setTimeout
onsubmit
事件和承诺执行之间引入一点延迟。但即使这样也不行。我尝试了
send(newformdata(data))
将HtmleElement表单直接作为数据发送,但也会发布空表单

我不熟悉JS中的异步,承诺中是否有延迟的要求?或者我做错了什么

我需要在其中插入错误的代码

function submitForm(form_Data) {

throw SyntaxError; //THE REQUIRED ERROR

getData(form_Data.method, form_Data.action, form_Data).then((res) => {
    console.log(res);
}).catch((err) => {
    console.log(err);
});}
完整代码:

“严格使用”;
函数getData(方法、url、数据){
返回新承诺(功能(解决、拒绝){
设xhr=newXMLHttpRequest();
open(方法、url、true);
xhr.onload=函数(e){
e、 预防默认值();
如果(this.status>=200&&this.status<300){
解析(xhr.response);
}否则{
拒绝({
状态:这个状态,
statusText:this.statusText
});
}
};
xhr.onerror=函数(){
拒绝({
状态:这个状态,
statusText:this.statusText
});
};
发送(数据);
});
}
函数提交表单(表单数据){
抛出语法错误;
getData(form_Data.method、form_Data.action、form_Data)。然后((res)=>{
控制台日志(res);
}).catch((错误)=>{
控制台日志(err);
});
}

AJAX
Json和Ajax

抛出错误会导致JavaScript中止,因此事件处理程序永远不会返回,表单会正常提交。这就像没有任何JS一样


JS无法提交表单数据,因为您正在传递一个不受支持的HTMLFormElement对象

你需要构建一个新的模型


我也用过这个,但FormData总是返回空对象。我现在传递的HTMLFormElement与我以前传递给FormData构造函数的数据相同,但不起作用。它返回空检查浏览器开发人员工具网络选项卡-您应该看到表单数据正在发送-不要相信
console.log(new-FormData(data))
,如果这是您正在做的,因为输出将“看起来”像一个空的FromData对象。请再次尝试,但它仍然发送空表单。在服务器上记录的条目没有数据。我使用一个变量来存储和记录FormData Obj。现在我直接在
xhr.send(newformdata(data))
xhr.send(new FormData(data));