【问题标题】:How to send both a form data and a POST variable to a php script through ajax如何通过ajax将表单数据和POST变量发送到php脚本
【发布时间】:2020-05-16 01:43:18
【问题描述】:

我正在尝试同时发送表单数据和 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”

<?php
if (isset($_POST['videoid']){

}
else{
echo "jo"
}
?>

当我查看网络时,它看起来只是在传递表单: what I see

如果有人有任何想法,请随时告诉我!如果有什么需要说清楚的,请询问。

【问题讨论】:

  • 我会使用 jquery 来处理一切。这不是一个真正的 PHP 问题。可能相关线程stackoverflow.com/questions/30133599/…
  • 如果您想将数据添加到 FormData 对象,请不要将其创建直接传递给 send 调用。意思是把它保存到一个变量中,然后使用 FormData 的 append() 方法添加你的数据并将变量传递给 send()

标签: javascript ajax


【解决方案1】:

HTML:

<form id="my-form" action="/" method="post">

  <input type="text" name="videoid"><input type="submit" value="Submit">

</form>

<div id="output"></div>

JS:

let myForm = document.querySelector( "#my-form" );
let output = document.querySelector( "#output" );

myForm.addEventListener( "submit", function(e) {

  e.preventDefault();

  let formData = new FormData( myForm );
  let xhr = new XMLHttpRequest();

  xhr.onreadystatechange = function() {

    if( this.readyState == 4 && this.status == 200 ) {

      output.innerHTML = this.responseText;

    }

  }

  xhr.open( "POST", "edit.inc.php" );
  xhr.send( formData );

});

【讨论】:

  • 这不是 OP 的问题,使用变量的名称而不是函数的 this 很好,因为它仍在函数表达式的范围内,并且没有被修改为其他内容。 OP 正在尝试以错误的方式添加您的答案未解决的发布数据
  • 我在想别的东西,认为它会更安全,但我意识到这实际上并不重要。我会用这个方法,谢谢!
  • @PatrickEvans 这个方法不是很干净,但它会给出相同的结果。
  • @PatrickEvans 你是对的,我的推理不正确,但是根据 OP 的问题,代码应该/确实可以执行预期结果
猜你喜欢
  • 1970-01-01
  • 2017-03-14
  • 2017-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多