我使用AjaxFileUpload(http://www.phpletter.com/Our-Projects/AjaxFileUpload/)上传文件并在struts2中获取json结果类型响应(code.google.struts2jsonresult.JSONResult)

但浏览器始终会弹出下载窗格,请给我一些建议,在此先感谢

这是我在struts.xml中的配置:

......

<result-type name="json" class="code.google.struts2jsonresult.JSONResult">

............


<action name="doGetList" method="doGetList"
class="main.java.GetListAction">

   <result type="json">
    <param name="target">jsonObject</param>
    <param name="deepSerialize">true</param>
    <param name="patterns"> -*.class</param>
   </result>
  </action>


和js客户:

function ajaxFileUpload(){



    $("#loading").ajaxStart(function(){

              $(this).show();

       }).ajaxComplete(function(){

           $(this).hide();
       });

    $.ajaxFileUpload
    (
     {
      url:'doGetList.do',
      secureuri:false,
      fileElementId:'uploadfile',
      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);
       alert(data.records);

      }
     }
    )

  return false;

 }

最佳答案

我在红宝石上遇到了同样的问题。

使用此代码时,我注意到返回标头为“ Content-Type:apllication / json”。

render :json => {:error => "", :msg => data}


然后我尝试使用以下内容代替...

render :text => {:error => "", :msg => data}.to_json


之后,将返回标头更改为“ Content-Type:text / html”,然后问题解决了。

10-07 22:34