Javascript 如何通过ajax向php脚本发送表单数据和POST变量

Javascript 如何通过ajax向php脚本发送表单数据和POST变量,javascript,ajax,Javascript,Ajax,我试图发送表单数据和POST变量,但我不知道如何发送。我试着做到以下几点: const formthing = document.getElementById("theform"); function submitfunc(e){ e.preventDefault(); const thing = new XMLHttpRequest(); thing.open("POST", "edit.inc.php", true); thing.onreadystatechange = functio

我试图发送表单数据和POST变量,但我不知道如何发送。我试着做到以下几点:

const formthing = document.getElementById("theform");

function submitfunc(e){
e.preventDefault();
const thing = new XMLHttpRequest();
thing.open("POST", "edit.inc.php", true);

thing.onreadystatechange = function(){

if (thing.readyState == 4 && thing.status == 200){
var message = thing.responseText;

 $("#theform").html(message);

}

}

var videoid = "watever";

thing.send(new FormData(formthing), "videoid="+videoid);

}
但它不起作用,因为php脚本返回“jo”

HTML:


JS:

let myForm=document.querySelector(“我的表单”);
让output=document.querySelector(“#output”);
myForm.addEventListener(“提交”,函数(e){
e、 预防默认值();
设formData=newformdata(myForm);
设xhr=newXMLHttpRequest();
xhr.onreadystatechange=函数(){
if(this.readyState==4&&this.status==200){
output.innerHTML=this.responseText;
}
}
xhr.open(“POST”、“edit.inc.php”);
xhr.send(formData);
});
HTML:


JS:

let myForm=document.querySelector(“我的表单”);
让output=document.querySelector(“#output”);
myForm.addEventListener(“提交”,函数(e){
e、 预防默认值();
设formData=newformdata(myForm);
设xhr=newXMLHttpRequest();
xhr.onreadystatechange=函数(){
if(this.readyState==4&&this.status==200){
output.innerHTML=this.responseText;
}
}
xhr.open(“POST”、“edit.inc.php”);
xhr.send(formData);
});

我会用jquery处理所有事情。这不是一个真正的PHP问题。如果要向FormData对象添加数据,可能是相关线程,请不要将数据的创建直接传递给send调用。意思是将它保存到一个变量中,然后使用FormData的append()方法添加数据,并将变量传递给send(),我将使用jquery处理所有内容。这不是一个真正的PHP问题。如果要向FormData对象添加数据,可能是相关线程,请不要将数据的创建直接传递给send调用。意思是将其保存到变量中,然后使用FormData的append()方法添加数据并将变量传递给send(),这不是OP的问题,使用变量名而不是函数的
This
可以,因为它仍然在函数表达式的范围内,并且不会被修改为其他内容。OP试图以错误的方式添加post数据,而您的答案没有提到这一点。我在想其他事情,认为这样会更安全,但我意识到这其实并不重要。我要用这个,谢谢@PatrickEvans此方法不太干净,但会给出相同的结果。@PatrickEvans您是对的,我的推理不正确,但代码应该/确实能够按照OP的问题执行预期结果这不是OP的问题,使用变量名而不是函数的
这个
很好,因为它仍然在函数表达式的范围内,并且没有被修改为其他内容。OP试图以错误的方式添加post数据,而您的答案没有提到这一点。我在想其他事情,认为这样会更安全,但我意识到这其实并不重要。我要用这个,谢谢@PatrickEvans此方法不是很干净,但它会给出相同的结果。@PatrickEvans您是对的,我的推理不正确,但代码应该/确实能够按照OP的问题执行预期结果
<?php
if (isset($_POST['videoid']){

}
else{
echo "jo"
}
?>