日期:2014-05-20  浏览次数:20621 次

struts2 jquery ajaxfileupload 插件对返回的json是无法处理!!
本人用struts2 jquery ajaxfileupload json 做上传处理,文件可以正常上传。但在返回时直接出来个下载页面。里面内容是{"msg":"789456123"}
上传页面的JS 代码:
JScript code

<script type="text/javascript" src="./js/jquery.js"></script>
<script type="text/javascript" src="./js/ajaxfileupload.js"></script>
    <script type="text/javascript">
    function FileUpload()
    {
        $.ajaxFileUpload
        (
            {
                url:'fileupload.action', 
                secureuri:false,
                fileElementId:'upload',
                dataType: 'json',
                success: function (data, status)
                {
                    if(typeof(data.error) != 'undefined')
                    {
                        if(data.error != '')
                        {
                            alert(data.error);
                        }else
                        {
                            alert(data.msg);
                        }
                    }
                },
                error: function (data, status, e)
                {
                    alert(e);
                }
            }
        )        
        return false;
    }
    </script>



struts.xml配制文件
XML code

<struts>
    <package name="FileUploadAction" extends="json-default">
        <action name="fileupload" class="fileUploadAction">
        <param name="savePath">/userfiles/image</param>
            <result type="json"></result>
        </action>
    </package>
</struts>

 

好像success: function (data, status) 这个根本就没执行。直接把json以下载形势返回来了。

Struts2 是2.1.6 json插件是 jsonplugin-0.33 jquery.js 与 ajaxfileupload.js 都是从ajaxfileupload里拷出来的。 各位帮下,多谢了。

------解决方案--------------------
我这两天也遇到这个问题了,小研究了一下,已搞定

是因为struts2直接就把你那个json下载了 因为你的iframe页面中并没有什么处理xml或者json的js函数造成的

这个ajax控件的原理是认为你iframe页面中是一个包含xml或json的页面,他的例子中直接echo了json,所以是可以成功的

而我们需要做的就是用直接返回一个页面,页面中包含json就可以了,不使用那个struts2的json插件 明白?

你不理财,财不理你!