Javascript 无法使用ajax上载文件
我有用于上传文件的cgi,当我使用Javascript 无法使用ajax上载文件,javascript,ajax,upload,Javascript,Ajax,Upload,我有用于上传文件的cgi,当我使用上传文件时,它工作得很好,但是如果我使用ajax发送数据,它就不工作了 形式如下: <form id="confUpdate" enctype="multipart/form-data" method="post" action="upload.cgi"> <input id='upLoad' type='file' name="file"> <input id='btnUpload' type="submit" n
上传文件时,它工作得很好,但是如果我使用ajax发送数据,它就不工作了
形式如下:
<form id="confUpdate" enctype="multipart/form-data" method="post" action="upload.cgi">
<input id='upLoad' type='file' name="file">
<input id='btnUpload' type="submit" name="send" value="Upload">
</form>
单击按钮后,调试文本显示为“Upload:”,表示它发送文件数据,但xml(服务器端响应的内容)为空
我不确定这是我的服务器端错误还是我的javascript端错误
我想这个文件应该是name='file'
任何建议都将不胜感激 我发现了问题所在
我检查了上传的api,发现我也需要发送按钮的名称
因此,ajax现在是:
var upfile=document.getElementById("upfile");
var upform=document.getElementById("upform");
var btnUpload=document.getElementById("btnUpload");
var info=document.getElementById("InfoText");
var xhr;
upform.onsubmit = function(event){
event.preventDefault();
info.innerHTML="";
var files=upfile.files;
var formData=new FormData();
if(files[0].name.split(".")[1]!="bin"){
info.innerHTML="The file should be .bin file.";
}else{
info.innerHTML="Uploading, please wait.";
formData.append("file",files[0],files[0].name);
formData.append("send","Send");
if (window.XMLHttpRequest) {
xhr=new XMLHttpRequest();
}else{
xhr=new ActiveXObject("Microsoft.XMLHTTP");
}
try{
xhr.open('POST', 'upload.cgi', true);
//xhr.setRequestHeader("Content-Type","multipart/form-data");
xhr.onreadystatechange = onReceive;
xhr.send(formData);
}catch(e){
xhr.abort();
}
}
}
function onReceive(){
var xml;
var elem;
if(xhr.readyState==4){
if(xhr.status==200){
xml=xhr.responseText;
info.innerHTML="Uploaded:"+xml;
}else{
info.innerHTML="Something is error.";
}
}
}
我真傻~谁知道我上传文件时按钮的名字很重要
谢谢大家给我的建议 服务器端代码在哪里?也,将日志记录添加到服务器端代码中,以确保一切按预期运行。将
内容类型设置为null或不设置请求头。您的浏览器是否支持ajax文件发送?您是否查看了浏览器开发人员工具中的Net标记以查看发送的数据结构?很抱歉,也回复了最近,我上周末为住院的妈妈忙着:(@Ankit,我的服务器端代码和我的本地网页(我使用bash shell编写html内容)在同一个目录中@Rahil Wazir,这是一个用于文件上传的ajax,我试图不设置请求头,但仍然不起作用:(@maxim.tkachenko,我使用crome和firefox,它可以使用ajax而不需要上传文件。@Quentin,我使用firefox进行调试,发送和我使用
提交数据一样。希望您能进一步帮助我!
var upfile=document.getElementById("upfile");
var upform=document.getElementById("upform");
var btnUpload=document.getElementById("btnUpload");
var info=document.getElementById("InfoText");
var xhr;
upform.onsubmit = function(event){
event.preventDefault();
info.innerHTML="";
var files=upfile.files;
var formData=new FormData();
if(files[0].name.split(".")[1]!="bin"){
info.innerHTML="The file should be .bin file.";
}else{
info.innerHTML="Uploading, please wait.";
formData.append("file",files[0],files[0].name);
formData.append("send","Send");
if (window.XMLHttpRequest) {
xhr=new XMLHttpRequest();
}else{
xhr=new ActiveXObject("Microsoft.XMLHTTP");
}
try{
xhr.open('POST', 'upload.cgi', true);
//xhr.setRequestHeader("Content-Type","multipart/form-data");
xhr.onreadystatechange = onReceive;
xhr.send(formData);
}catch(e){
xhr.abort();
}
}
}
function onReceive(){
var xml;
var elem;
if(xhr.readyState==4){
if(xhr.status==200){
xml=xhr.responseText;
info.innerHTML="Uploaded:"+xml;
}else{
info.innerHTML="Something is error.";
}
}
}