最近在做毕业设计,遇到个麻烦,就是我想在某个页面(这是一个修改用户信息的页面)有两个FORM,称为FORM1跟FORM2吧。FORM1列出的是用户的个人信息,包括头像等。FORM2是用来上传头像的图片。
现在的问题是。我想做个局部刷新的效果,FORM2中设个BUTTON 用Onclick="upload()"来触发这个函数,这个函数需要提交这个FORM2到UploadServlet中去。当上传成功,servlet返回一个代表上传文件路径的字符串给回调函数callback。然后再CALLBACK里面再写在<img>标签中。
现在想问各位大哥的是这个提交FORM的函数怎么写?jquery跟json的内容还没学到,网上查了几个方法不怎么看得懂,所以来这里请教下。。
最重要做到的是局部刷新页面,这应该是用到AJAX吧?这个学过
还有。这个Form包含了文件上传项,enctype="multipart/form-data"在提交的时候会跟普通的form表单提交有不同区别吗?

解决方案 »

  1.   

    楼主是不是想上传成功之后,把上传的图片显示出来
    这个iframe可以做,
    楼主搜下 iframe上传,成功后,给parent的dom(img)赋上刚上传的值就可以了。
      

  2.   

    感谢楼上,我百度搜了个dojo_iframe无刷新上传文件,不过现在时间比较紧,所以来不及看先收藏等过几天毕业设计完了再继续。。
    再问下,还有别的方法吗?
      

  3.   

    iframe无刷新(伪无刷新)上传,应该是最简单的了,楼主来不及看,就无解了。
      

  4.   

    我想知道什么叫做无刷新?AJAX是局部刷新,这个不刷新的话又怎么回返回图片跟地址呢?
    另外我找到个例子,稍微看了下感觉比较简单很适合我,这里放上来顺便再问点问题
    下面代码可能排版太烂,看不习惯可以看这个网址http://www.oschina.net/code/snippet_54371_4502[代码] [HTML]代码
    01<html>   02<body>   03   04<form action="upload.jsp" id="form1" name="form1" encType="multipart/form-data"  method="post" target="hidden_frame" >   05    <input type="file" id="file" name="file" style="width:450">   06    <INPUT type="submit" value="上传文件"><span id="msg"></span>   07    <br>   08    <font color="red">支持JPG,JPEG,GIF,BMP,SWF,RMVB,RM,AVI文件的上传</font>                 09    <iframe name='hidden_frame' id="hidden_frame" style='display:none'></iframe>   10</form>   11   12</body>   13</html>   14   15<script type="text/javascript">   16function callback(msg)   17{   18    document.getElementById("file").outerHTML = document.getElementById("file").outerHTML;   19    document.getElementById("msg").innerHTML = "<font color=red>"+msg+"</font>";   20}   21</script>  [代码] 原理就是输出一段js代码到 iframe 中,然后在iframe中来控制它的父页面view sourceprint?
    01<%@ page language="java" contentType="text/html; charset=gb2312" %>   02<%@ page import="com.jspsmart.upload.SmartUpload"%>   03   04<%   05    //新建一个SmartUpload对象   06    SmartUpload su = new SmartUpload();   07   08    //上传初始化   09    su.initialize(pageContext);   10   11    // 设定上传限制   12    //1.限制每个上传文件的最大长度。   13    su.setMaxFileSize(10000000);   14   15    //2.限制总上传数据的长度。   16    su.setTotalMaxFileSize(20000000);   17   18    //3.设定允许上传的文件(通过扩展名限制),仅允许doc,txt文件。   19    su.setAllowedFilesList("doc,txt,jpg,rar,mid,waw,mp3,gif");   20        21    boolean sign = true;   22        23    //4.设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat,jsp,htm,html扩展名的文件和没有扩展名的文件。   24    try {   25        su.setDeniedFilesList("exe,bat,jsp,htm,html");   26   27        //上传文件   28        su.upload();   29        //将上传文件保存到指定目录   30        su.save("c:\\");  31  32    } catch (Exception e) {  33        e.printStackTrace();  34        sign = false;  35    }  36    if(sign==true)  37    {  38        out.println("<script>parent.callback('upload file success')</script>");  39    }else 40    {  41        out.println("<script>parent.callback('upload file error')</script>");   42    }   43%>   
    我想知道这个parent.callback是返回到页面的哪个标签?这段代码是不是不会重新刷新页面?
      

  5.   

    比如
    test.html中有个iframe,其src为a.html,这个a.html中就是上传界面,和一般的上传一样,上传成功后,iframe刷新里,但是其父窗口test.html并没刷新
    iframe上传成功后,返回一个值,用js输入其中parent就是指 父窗口test.html,parent.callback就是test.html的callback函数.
      

  6.   

    我大概懂你意思了。就像我刚才这一段,上面有个iframe是隐藏的,然后把form的target设置为iframe,刷新的就是这个隐藏的iframe对吧?但是对于这个callback还是不怎么明白,<script>parent.callback('upload file error')</script>假如这么一句话,这个upload file error是输出到哪里去?
      

  7.   

    iframe不是隐藏的,iframe页面里就是一个input type=file, 用户看似是在父窗口上传,而实际是在iframe中执行的....楼主 把你贴的代码跑一遍就清楚了.
      

  8.   

    那<script>parent.callback('upload file error')</script>这么一句话,这个upload file error是输出到哪里去?如果是按上面这段代码的话
      

  9.   

    父窗口的
    <script type="text/javascript">     16 function callback(msg)     17 {     18     document.getElementById("file").outerHTML = document.getElementById("file").outerHTML;     19     document.getElementById("msg").innerHTML = "<font color=red>"+msg+"</font>";     20 }     21 </script>