Javascript 未捕获的TypeError:FormData构造函数:参数1不是对象
您好,我对我的php脚本有一个获取请求,但是当我试图通过html提交表单数据时发生了一个错误。我怎样才能解决我的问题?谢谢Javascript 未捕获的TypeError:FormData构造函数:参数1不是对象,javascript,html,fetch,Javascript,Html,Fetch,您好,我对我的php脚本有一个获取请求,但是当我试图通过html提交表单数据时发生了一个错误。我怎样才能解决我的问题?谢谢 const formdata = new FormData(document.querySelector("form")); const submit = function(e) { e.preventDefault(); fetch('script.php', { method: 'GET', body:
const formdata = new FormData(document.querySelector("form"));
const submit = function(e) {
e.preventDefault();
fetch('script.php', {
method: 'GET',
body: formdata,
})
.then(ans => ans.text())
.then(table => document.querySelector('#ans').innerHTML = table);
};
document.addEventListener('DOMContentLoaded', function(){
document.querySelector('#submitButton').addEventListener('click', submit);
});
<form id="form" method="GET">
<div class="inputX centered">
<label for><div>X:</div></label>
<div class="form_radio_group">
<div class="form_radio_group-item">
<input id="radio-1" type="radio" name="x_set" value="1" checked>
<label for="radio-1">1</label>
const formdata=newformdata(document.querySelector(“form”);
const submit=函数(e){
e、 预防默认值();
fetch('script.php'{
方法:“GET”,
正文:formdata,
})
.then(ans=>ans.text())
.then(table=>document.querySelector(“#ans”).innerHTML=table);
};
document.addEventListener('DOMContentLoaded',function(){
document.querySelector(“#submitButton”).addEventListener('click',submit');
});
X:
1.
在运行以下代码行时,页面似乎没有表单
元素:
const formdata = new FormData(document.querySelector("form"));
如果页面中没有任何表单元素,querySelector
将返回null
,它不是与错误消息匹配的对象。您可以通过记录表单元素(或null)进行测试
在呈现文档之前,脚本正在运行,因此在调用
newformdata
时,表单还不存在。将其移动到submit处理程序中,或者更好的方法是从事件中获取它:
const submit=函数(e){
const formdata=新表单数据(document.querySelector(“表单”);
e、 预防默认值();
fetch('script.php'{
或
const submit=函数(e){
const formdata=新的formdata(如target.form);
e、 预防默认值();
fetch('script.php'{
我还建议您在表单上放置一个onsubmit
(或侦听表单上的提交事件),而不是侦听对提交按钮的单击。这样,即使表单是通过其他交互提交的,您的处理程序也会触发,如在输入上按enter键、单击其他提交按钮等
要在没有正文的GET请求中使用FormData,请构造一个实例并使用其toString方法获取要附加到URL的查询字符串:
const formdata=new formdata(event.target);
const queryString=新的URLSearchParams(formdata).toString();
fetch(`script.php?${queryString}`{
您的脚本在呈现文档之前正在运行,因此在调用new FormData
时,表单还不存在。请将其移动到提交处理程序中。请参阅我的更新答案,了解如何使用URLSearchParams和FormData提交GET。
const form = document.querySelector("form");
console.log('form', form);