我在" index.jsp"中有一个表单。用于上传图片:
<div id="uploadsContainer" class="mm11Container" style="top:100px; left: 300px;">
<div id="mydiv" class="mm11 card front face">
<form id= "uploadForm" action="imageUploadForm.jsp" onsubmit="setUploadedBackground('<%=fileName%>', '<%=uploadResult%>');" method="post" enctype="multipart/form-data">
<input class="uploads" type="file" name="file" size="50"/>
<input class="uploadFile" id='submitImage' type="submit" value="Upload File"/>
</form>
</div>
</div>
&#34; imageUploadForm.jsp&#34;中的代码将检查上传的文件是否实际上是一个图像,并且不超过最大文件大小,并将结果代码返回到&#34; index.jsp&#34;以及在数据库中存储上传文件的名称(假设它已正确上传)。
我想要的是在发生这种情况之后,JS函数
setUploadedBackground('<%=fileName%>', '<%=uploadResult%>');
被调用 - 这将使用结果代码来警告已超出最大文件大小,提醒用户上传的文件不是图像,或者实际设置&#34; mydiv&#34;的背景。到上传的图像。我希望只要单击“上载”按钮并且操作页面已完成运行并返回结果代码,就会发生这种情况。 JS使用Ajax来执行此操作而无需重新加载页面:
function setUploadedBackground(fileName, uploadResult){
alert("Function called uploadResult = "+uploadResult+ " fileName = "+ fileName);
if (uploadResult === "0" && fileName != null) {
alert("Uploading image");
var ajx;
if (window.XMLHttpRequest)
{// If the browser if IE7+[or] Firefox[or] Chrome[or] Opera[or]Safari
ajx=new XMLHttpRequest();
}
else
{//If browser is IE6, IE5
ajx=new ActiveXObject("Microsoft.XMLHTTP");
}
ajx.onreadystatechange=function()
{
if (ajx.readyState==4 && ajx.status==200)
{
alert("Here");
$("#mydiv").css('background-image', 'url(uploads/'+fileName+')');
$("#mydiv").css('background-size', '100%');
}
}
ajx.open("GET","index.jsp",true);
ajx.send();
return false;
}
else if (uploadResult.equals("1")) {
alert("Maximum file size exceeded");
} else if (uploadResult.equals("2")) {
alert("Please upload an image");
}
return false;
}
我一直在寻找年龄,但我不确定如何在JS之前首先执行动作JSP,而不必添加另一个将被称为“abackground”的按钮&#39;设置为abackground&#39;并且可以在图像上传后使用...非常感谢任何帮助!