这是我的javascript
function ajax_post(){
// Create our XMLHttpRequest object
var hr = new XMLHttpRequest();
// Create some variables we need to send to our PHP file
var url = "LiveUpdate.php";
var sb = document.getElementById("LiveUpdate").value;
var FirstName = document.getElementById("FirstName").value;
var images = document.getElementById("images").value;
var vars = "update="+sb+"&FirstName="+FirstName+"&images="+images;
hr.open("POST", url, true);
// Set content type header information for sending url encoded variables in the request
hr.setRequestHeader("Content-type", "multipart/form-data");
// Access the onreadystatechange event for the XMLHttpRequest object
hr.onreadystatechange = function() {
if(hr.readyState == 4 && hr.status == 200) {
var return_data = hr.responseText;
document.getElementById("message").innerHTML = return_data;
}
}
// Send the data to PHP now... and wait for response to update the status div
var formData = new FormData(document.querySelector("form"));
hr.send(formData); // Actually execute the request // Actually execute the request
document.getElementById("message").innerHTML = "processing...";
}
//show image before uploading
var loadFile = function(event) {
var output = document.getElementById('output');
output.src = URL.createObjectURL(event.target.files[0]);
};//end image
这是表格。 javascript和表单在同一个文件中。文件名是sample.php
<form action="popup.php" method="post" id="myForm" name="myForm" enctype="multipart/form-data">
<div id="message"></div>
<img src="" id="output" />
<input type="file" class="filestyle" data-buttonBefore="true" accept=".png, .jpg, .jpeg" onchange="loadFile(event)" name="images" id="images">
<input class="form-control" type="text" placeholder="First Name" name="FirstName" id="FirstName" value="">
<a href="#" class="btn btn-success" role="button" name="update" id="LiveUpdate" onclick="javascript:ajax_post();">Update</a>
</form>
此代码中的想法是。我想在不刷新页面的情况下将FirstName和Image等基本信息插入到数据库中。我选择标签提交ajax的原因。因此页面URL Account.php?Edit = 1将不会更改为Account.php,因为如果它更改为account.php,则弹出编辑模式将关闭。这段代码中的问题是。我不知道如何修复错误Warning: Missing boundary in multipart/form-data POST data in Unknown on line 0
任何人都可以帮我解决这个问题。谢谢!
答案 0 :(得分:9)
如果您没有手动指定任何内容,浏览器会设置正确的标题(包括内容类型中正确的多部分边界指示)。
所以你需要做的就是删除以下行:
hr.setRequestHeader("Content-type", "multipart/form-data");
否则你需要自己设置边界,正如Ellias Van Ootegem在Uploading a file with XMLHttprequest - Missing boundary in multipart/form-data中所建议的那样:
hr.setRequestHeader("Content-type","multipart/form-data; charset=utf-8; boundary=" + Math.random().toString().substr(2));
答案 1 :(得分:0)
这也可以。取自https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type
const config = {
标头:{
授权:Bearer ${localStorage.token}
,
“内容类型”:
“多部分/表单数据;边界= --------------------------- 974767299852498929531610575”
}
};