Fileをアップロードすると、ブラウザは常に追加されます.<br>解決策

2653 ワード

StructsのFileUploadコンポーネントを使用してファイルをアップロードする場合、返されたJson文字列には、「{」message」:」インポートファイルが成功しました」「result」:「OK」}」など、返されたJson文字列に不思議な
タグが追加され、ブラウザでは「
」{message」:インポートファイルが正常に」、result」:OK}
.これにより、Ajaxが戻り値を解析する際にエラーが発生します.
私のアップロードコードは、デフォルトでは常にerrorの処理に入ります.
         
 jQuery.ajaxFileUpload({
            type:"POST",
            url:"/****/upload.action?file="+fileName,
            secureuri:false,
            fileElementId:"upload",
            dataType: "json",
            success:function (data, status) {
                if (data != null) {
                    data = JSON.parse(data);
                    MBJ.alert("  ", data.message);
                } else {
                    MBJ.alert("  ", "      ,          : status = " + status);
                }
            },
            error:function (data, status, e) {
                MBJ.alert("  ", "      : status = " + status);
            }
        });

Googleを1周した後、多くの人が私と同じであることを発見しました.解決策はresponseの戻りタイプを【text/html】に設定することです.Struts 2ではActionの構成でこのように設定する必要があります.
  
<result name="success" type="json">
                <param name="root">msg</param>
                <param name="contentType">text/html;charset=UTF-8</param>
            </result>

annotation方式であれば、この言葉を付ける必要があります.
 @Action(value = "upload", results = { @Result(name = SUCCESS, params = { "root", "msg", "contentType",
            "text/html;charset=UTF-8" }, type = "json") })