Javascript 在表单提交时停止非Ajax文件上载

Javascript 在表单提交时停止非Ajax文件上载,javascript,php,html,ajax,Javascript,Php,Html,Ajax,我有一个表单,其中包括一堆文本和日期字段以及一个“文件”输入(见下文) 上传图片标识 函数selectfile(){ var x=document.getElementById(“progdiv”); x、 style.display=“block”; var file=u200;(“uploadedfile”).files[0]; //警报(file.name+“|”+file.size+“|”+file.type); var formdata=new formdata(); append(“

我有一个表单,其中包括一堆文本和日期字段以及一个“文件”输入(见下文)

上传图片标识
函数selectfile(){
var x=document.getElementById(“progdiv”);
x、 style.display=“block”;
var file=u200;(“uploadedfile”).files[0];
//警报(file.name+“|”+file.size+“|”+file.type);
var formdata=new formdata();
append(“uploadedfile”,file);
var ajax=new-XMLHttpRequest();
addEventListener(“progress”,progressHandler,false);
addEventListener(“加载”,completeHandler,false);
addEventListener(“error”,errorHandler,false);
addEventListener(“abort”,abortHandler,false);
open(“POST”、“file\u upload\u parser.php?confnum=“++”&file=1”);
发送(formdata);
formData.delete(上传文件);
document.getElementById(“uploadbutton”).style.backgroundColor=“#FF5733”;
document.getElementById(“上载按钮”).innerHTML=“照片上载”;
}
selectfile()函数是一个很好的文件上传函数,它使用Ajax显示一个小的上传状态栏,以便用户知道发生了什么。所有这些功能都工作正常,文件上传到服务器。问题是当我提交表单时,文件get被再次上传,这有点违背了用Ajax上传的目的。是否有办法使输入字段(文件)不成为表单的一部分,或在提交之前从中删除文件元素(因为它已经上载)?或者我完全不知道的另一种方式

任何帮助都将不胜感激


-Lawrence

对我有效的方法是从表单中删除多部分/表单数据,以便忽略文件上载

“编写客户端代码时: 当表单包含任何元素时,请使用多部分/表单数据 否则,您可以使用多部分/form data或application/x-www-form-urlencoded,但application/x-www-form-urlencoded将更有效。”


如果您想上载一些文件,但解决了我的问题,则此解决方案显然不起作用。

对我有效的方法是从表单中删除多部分/表单数据,从而忽略文件上载

“编写客户端代码时: 当表单包含任何元素时,请使用多部分/表单数据 否则,您可以使用多部分/form data或application/x-www-form-urlencoded,但application/x-www-form-urlencoded将更有效。”


如果您想上载一些文件,但解决了我的问题,则此解决方案显然不起作用。

也许您可以尝试阻止event.preventDefault()的默认行为。在收听
文件输入时,
单击此处更新
selectFile()
函数以获得更清晰的信息。@sidverma完成!事实上我想我明白了。删除“enctype=“multipart/form data”。从表单类型中删除似乎有效。也许您可以尝试阻止event.preventDefault()的默认行为在收听
文件输入时单击此处更新
selectFile()
函数以获得更清晰的信息。@sidverma完成了!实际上我想我已经完成了。删除“enctype”=“多部分/表单数据”。从表单类型看似乎有效。
<button class="contact100-form-upload-btn" id="uploadbutton" type="button" onclick="document.getElementById('uploadedfile').click()">Upload Picture Identification </button>
<input style="display:none" name="uploadedfile" id="uploadedfile" onchange="selectfile()" type="file" accept="image/*" />

        function selectfile() {
      var x = document.getElementById("progdiv");
      x.style.display = "block";
     var file = _("uploadedfile").files[0];
     //alert(file.name+" | "+file.size+" | "+file.type);
     var formdata = new FormData();
     formdata.append("uploadedfile", file);
     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_upload_parser.php?confnum=" + <?php echo $confnum ?> + "&file=1"); 
     ajax.send(formdata);
     
     formData.delete(uploadedfile);
     
     document.getElementById("uploadbutton").style.backgroundColor = "#FF5733";
     document.getElementById("uploadbutton").innerHTML = "Photo Uploading";
    }