Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未捕获的TypeError:FormData构造函数:参数1不是对象_Javascript_Html_Fetch - Fatal编程技术网

Javascript 未捕获的TypeError:FormData构造函数:参数1不是对象

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:

您好,我对我的php脚本有一个获取请求,但是当我试图通过html提交表单数据时发生了一个错误。我怎样才能解决我的问题?谢谢

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);