Javascript 向“当前表单”字段添加文件选项

Javascript 向“当前表单”字段添加文件选项,javascript,html,image,Javascript,Html,Image,我的网站上有一张反馈表。它非常基本,只有一个文本区域可以放置用户反馈和提交。 现在我计划添加一个选项,用于附加图片和反馈。添加另一个文本字段很容易,但是 我不知道如何将文件添加到JavaScript中。请建议将文件添加到以下脚本中所需的更改 函数上传(){ var反馈=uU8;(“反馈”).值; 风险值状态=uuux(“状态”); 如果(反馈==“”){ status.innerHTML=“空”; }否则{ status.innerHTML='请稍候…'; var ajax=ajaxObj(“P

我的网站上有一张反馈表。它非常基本,只有一个文本区域可以放置用户反馈和提交。 现在我计划添加一个选项,用于附加图片和反馈。添加另一个文本字段很容易,但是 我不知道如何将文件添加到JavaScript中。请建议将文件添加到以下脚本中所需的更改

函数上传(){
var反馈=uU8;(“反馈”).值;
风险值状态=uuux(“状态”);
如果(反馈==“”){
status.innerHTML=“空”;
}否则{
status.innerHTML='请稍候…';
var ajax=ajaxObj(“POST”,“feedback.php”);
ajax.onreadystatechange=函数(){
if(ajaxReturn(ajax)=true){
if(ajax.responseText!=“ok”){
status.innerHTML=ajax.responseText;
}否则{
window.location=“thanky.php”;
}
}
}
发送(“feedback=”+feedback);
}
}

提交详细信息
给您:

var x = document.createElement("input");
x.setAttribute("type", "file");
document.querySelector("#form1").appendChild(x);

希望有帮助。

除非您试图使用ajax上传文件,否则只需将表单提交到feedback.php即可

<form enctype="multipart/form-data" action="feedback.php" method="post">
  <input id="image-file" type="file" />
</form>

如果您想在后台上传图像(例如,不提交整个表单),您需要使用Flash,因为JavaScript本身无法做到这一点


看第一个答案,好的。。因此,有两件事你不会改变:

  • 删除该标题('application/x-www-form-urlencoded'),改为添加'multipart/form data'标题。文件不能以URL编码方式发送

  • 其次,在ajax请求中,您不需要以字符串形式发送反馈,而是需要发送FormData对象,它支持通过ajax上传文件:

    var myForm=$(“#form1”)[0]; var formData=新formData(myForm); 发送(formData)

  • 更新:
    忘了提及:当然,您需要的第三件事是添加到表单中

    您在这里使用哪一个库来实现ajax?我对编码非常熟悉。。图书馆意味着什么?ajaxObj在这里做什么?激发ajax请求的选项在哪里?您正在使用jquery吗?或者您编写了方法ajaxObject,ajaxReturn您自己的实现了吗?ajax return带有“ok”或“error”消息调用ajax函数ajaxObject(meth,url){var x=new XMLHttpRequest();x.open(meth,url,true);x.setRequestHeader(“内容类型”,“应用程序/x-www-form-urlencoded”);返回x;}函数ajaxReturn(x){if(x.readyState==4&&x.status==200){return true;}}因此我相信根据您的代码,我需要将脚本更改为……ajax.send(“feedback=“+feedback+”&x=“+x”)…是否正确?@user3586736:我不知道。这取决于您的ajax调用的API。@user3586736:请在此处参考PHP ajax:。希望有此帮助。但是没有JavaScript,我将无法从PHP获得响应。。之后也无法执行其他css效果submitting@user3586736很高兴我帮了你。既然你看起来是新来的,你应该投票决定答案这将帮助您并将解决问题的答案标记为“已接受”。