如何将图像加载到<;部门>;在JavaStruts2中使用ajax/jquery将图像上传到服务器后,是否自动无需刷新页面?
我有一个问题,当我试图加载到标签图像自动刷新页面后,图像上传到服务器。我的项目是基于Java的Struts 2框架 这是上传文件模型。(FileUpload.java)如何将图像加载到<;部门>;在JavaStruts2中使用ajax/jquery将图像上传到服务器后,是否自动无需刷新页面?,java,jquery,ajax,struts2,upload,Java,Jquery,Ajax,Struts2,Upload,我有一个问题,当我试图加载到标签图像自动刷新页面后,图像上传到服务器。我的项目是基于Java的Struts 2框架 这是上传文件模型。(FileUpload.java) 这是上传文件的动作。(FileUploadAction.java) 这是jsp文件。(UserRegister.jsp) 现在我可以将图像上传到服务器,并将图像加载回“UserRegister.jsp”中的。但是,如果我在表单中写入“用户名”后上载图像,“用户名”将在加载图像时丢失 所以,我的问题是如何在图像上传到服务器后
这是上传文件的动作。(FileUploadAction.java)
这是jsp文件。(UserRegister.jsp)
现在我可以将图像上传到服务器,并将图像加载回“UserRegister.jsp”中的。但是,如果我在表单中写入“用户名”后上载图像,“用户名”将在加载图像时丢失 所以,我的问题是如何在图像上传到服务器后,在不刷新页面的情况下自动加载标签
多谢各位 这与客户端的关系大于与服务器端的关系。 首先,为了在不重新加载页面的情况下发布/提交数据,需要使用Ajax或XMLHttpRequest 使用Ajax的示例如下: 但就个人而言,对于文件上传,我会使用XMLHttpRequest(xhr)(请注意,这与Ajax非常相似,原因是xhr有一种更干净的方式来监控上传进度,这通常是一个好的上传界面所需要的)
函数上传(){
//获取文件。
var files=$('input#file_upload')。文件;
var xhr=new XMLHttpRequest();
xhr.open('post','/home/upload',true);
//完成后,获取链接并将其添加到div。
xhr.onreadystatechange=函数(状态){
如果(xhr.readyState==4&&xhr.status==200){
var link=xhr.responseText;
$('div.image').innerHTML(“”);
}
};
//发送请求
var form=new FormData();
form.append('file',file);
发送(表格);
}
因此,最终,使用ajax(或xhr),您根本不需要html中的表单标记来提交文件
[编辑]:我已编辑url路径和输入标记id以匹配您的代码。请再试一次。如果您想在不刷新的情况下执行此操作,则必须使用AJAX 如果您只是想在上载图像时保留一些值,可以将这些值放在上载操作中,并放大
标记以包含它们(请注意,用户名和用户都将输入作为名称,但它们应该不同)
差不多
在行动中
public class FileUploadAction extends ActionSupport implements ServletRequestAware {
public FileUpload fileUpload = new FileUpload();
public String username;
/* GETTERS AND SETTERS */
如果要传递很多值,可以创建包含参数的bean(例如InputParameters),因此
public FileUpload fileUpload = new FileUpload();
public String username;
public Integer age;
public String country;
在你的行动中
public FileUpload fileUpload = new FileUpload();
public InputParameters input;
和在JSP页面中
如果您需要在许多表单中使用fileupload操作,每个表单都有不同的数据要发布/检索,那么您可以使用输入参数接口,或者使用继承来扩展基本fileupload操作以满足每个页面的需要
我并不是说这比使用AJAX好或坏,这只是另一种值得了解的方式
附言:使用Struts标签通常比使用纯HTML好。。。他们是来帮忙的;) 我不使用struts,因此如果我没有理解您的问题,我深表歉意。通常,在图像上传到服务器后,您应该存储一个指向该图像的链接,并将其发送回javascript客户端代码。客户端的JQuery可以获取链接并将其添加到div中。为什么不使用JQuery和ajax上传文件呢?谢谢MikeNQ。我已经存储了链接,但是现在我不能只刷新标签了。嗨,可怕的袋熊,我是java-struts-jquery-ajax项目的新手。因此,请解释如何在此任务中使用jquery和ajax。非常感谢。看看这个谢谢米肯克的回答。但是你的回答对我不起作用。在我的页面中有一些文本框和图像。首先,用户在文本框中输入一些文本,然后选择要上传的图像。当用户选择图像时,图像将上载到服务器,然后从服务器加载回来显示在此页面上,但不刷新页面(只刷新标记)。您能否解释错误或其不起作用的原因?你可以通过我的电子邮件与我联系,因为我们可以用越南语交流,以便更好地理解。:)请告诉我你的电子邮件地址,以便我可以通过电子邮件与你联系。我在你的stackoverflow帐户中看不到你的电子邮件。天哪。。。除了其他人可能对该解决方案感兴趣之外,它最好留在StackOverflow(评论中也有一个永久性的聊天,而且比大量邮件更实时)。。。永远不要在网页上清楚地写下你的电子邮件地址:|否则你将因以下原因受到垃圾邮件发送者的迫害:life@Bentley:对此有何反馈?
$(function() {
$( "#file_upload" ).change(function() {
document.myForm.submit();
});
});
function upload(){
// Get the files.
var files = $('input#file_upload').files;
var xhr = new XMLHttpRequest();
xhr.open('post','/home/upload', true);
// Done, get the link and add it to the div.
xhr.onreadystatechange=function(status){
if (xhr.readyState==4 && xhr.status==200){
var link = xhr.responseText;
$('div.image').innerHTML('<img src="'+link+'"></img>');
}
};
// Sending request
var form = new FormData();
form.append('file',file);
xhr.send(form);
}
public class FileUploadAction extends ActionSupport implements ServletRequestAware {
public FileUpload fileUpload = new FileUpload();
public String username;
/* GETTERS AND SETTERS */
public FileUpload fileUpload = new FileUpload();
public String username;
public Integer age;
public String country;
public FileUpload fileUpload = new FileUpload();
public InputParameters input;