【发布时间】:2018-09-01 13:55:37
【问题描述】:
我正在制作一个表单来上传带有验证码的文件,但 ajax 没有发送表单数据。
index.html:
var file = _("file").files[0];
// The next two lines print the correct variables
console.log("file", file);
console.log("response", grecaptcha.getResponse());
var formdata = new FormData();
formdata.append("file", file);
formdata.append("g-recaptcha-response", grecaptcha.getResponse());
var ajax = new XMLHttpRequest();
ajax.upload.addEventListener("progress", progressHandler, false);
ajax.addEventListener("load", completeHandler, false);
ajax.addEventListener("error", errorHandler, false);
ajax.addEventListener("abort", abortHandler, false);
ajax.open("POST", "file.php");
ajax.send(formdata);
表格:
<form id="upload_form" enctype="multipart/form-data" method="post">
<div><div id="recaptcha" class="g-recaptcha" data-sitekey="XXXXXXXXXXXXXXXXX"></div></div>
<div><input type="file" name="file" id="file" onchange="uploadFile()"></div>
</form>
文件.php:
<?php
var_dump($_POST);
var_dump($_FILES);
?>
两者都返回空数组
编辑:表单数据仍然没有随这一行发送
ajax.send(new FormData(document.querySelector("form")));
【问题讨论】:
-
您的表单是否在 HTML 中定义?
-
@Tim 我将表格添加到问题中
标签: php ajax post file-upload