iteye_19634
2009-09-15 10:45 阅读 319
已采纳

Struts2上传问题,返回json突然弹出下载窗口

我在做一个上传功能的时候,按照网上的例子做的Struts2上传,并返回一个json字符串,但是上传成功后却发生一个弹出窗口,文件内容是返回的json。
Struts.xml:
[code="java"]



application/vnd.ms-excel,application/actet-stream

        <param name="uploadPath">uploads/templates/</param>
        <param name="downloadPath">resources/reports/</param>
        <result type="json">
            <param name="includeProperties">success</param>
        </result>
    </action >

[/code]
Action逻辑没有问题,测试通过,就是每次上传完都会跳出个窗口,记得以前做的时候没用啊,苦思不知道问题原因,希望哪位高手给指点或者给点思路,非常感谢。
另外还有个问题就是,我如果通过ajax的方式进行上传的话,为什么表单内的file,和其他表单元素的值不能映射到Struts2的action中去,而用表单直接提交时没有问题的。
[b]问题补充:[/b]
谢谢各位的回答,chenyin0318的办法我试了还是不行,那该死的下载窗口似乎和输出的json对象数目多少没有关系,都会弹出下载窗口。

To zuojc7:
是这样的,我是用ajax的方式做上传文件的,我回传一个json是确保上传成功,如果客户端获取success==true,那说明上传成功,js会做一些相应的提示和其他操作。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • 已采纳
    iteye_7589 iteye_7589 2009-09-15 13:53

    ajax 提交form要客户端js收集form里的数据,并填充。

    直接提交是浏览器完成了。

    用jquery时可以用form的serialize。
    $.post("test.php", $("#testform").serialize());

    http://docs.jquery.com/Ajax/jQuery.post#code

    点赞 评论 复制链接分享
  • chenyin0318 chenyin0318 2009-09-15 12:22

    返回时setContentType("text/html;charset=utf-8")试试
    在返回的json数据里如果只有success:true好像就会弹个下载框
    我做的时候也被这个搞得烦死了 后来加个msg:''就好了

    点赞 评论 复制链接分享
  • zuojc5 zuojc5 2009-09-15 13:27

    那是你的返回类型没有设置吧,这是servlet中的一个经典的错误,至于你返回的数据是json我就不明白了上传文件你

    点赞 评论 复制链接分享

相关推荐