1

我的问题: json 字符串作为文件返回。当我调用 getJSONResult 操作时,它会给我一个包含 json 字符串的文件,我可以打开或下载该文件。

我认为这是一个配置问题,但我找不到它。如果有人可以帮助我,我会很高兴,谢谢大家!

我有一个带有提交的打开表单,它使用操作和执行方法来获取数据。然后,我可以让 jquery 工作的唯一方法是放置一个只返回“成功”的操作和执行方法,然后我通过第三个操作进入我的 jquery 网格。

struts.xml

<struts>
   <package name="live" namespace="/live" extends="struts-default,json-default">
      <action name="gridAction" class="core.action.AdminAction"> 
         <result name="success" type="json"></result> 
         <result name="error">/live/YYY.jsp</result> 
      </action>
   </package>
</struts>
4

2 回答 2

2

我假设您使用的是 Internet Explorer,因为我从来没有遇到过 Google Chrome 的这个问题(甚至还有一个插件可以很好地格式化它:https ://chrome.google.com/webstore/detail/ chklaanhfefbnpoihckbnefhakgolnmc )

环顾四周,如果您确实使用的是 IE,我提出了两个页面,它们为您的问题提供了相同的解决方案:

在 Internet Explorer 中查看 JSON

如何说服 IE 简单地显示 application/json 而不是提供下载?

解决方案的主要要点在这里:

需要在 IE 中查看 JSON 响应?

  1. 打开记事本并粘贴以下内容:

    Windows Registry Editor Version 5.00;
    ; Tell IE 7,8,9 to open JSON documents in the browser on Windows XP and later.
    ; 25336920-03F9-11cf-8FD0-00AA00686F13 is the CLSID for the "Browse in place" .
    ;
    [HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/json]
    "CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
    "Encoding"=hex:08,00,00,00
    [HKEY_CLASSES_ROOT\MIME\Database\Content Type\text/json]
    "CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
    "Encoding"=hex:08,00,00,00
    
  2. 将文档另存为 IE-Json.reg,然后运行它。注意:这已经在 Windows XP 和 Windows 7 上使用 IE 7、8、9 进行了测试。
于 2012-08-08T19:15:30.463 回答
1

没有问题(即struts2问题),这是因为您正在使用chrome并调用一个返回json结果而不使用ajax的操作。有些浏览器只会为您个人提供下载对话框,我真的很喜欢 chrome 在浏览器窗口中显示 json 字符串而不会大惊小怪......它非常适合调试。

更新我没有看 IE 的第一个屏幕截图,你在哪里获得下载对话框

为了防止这种情况...我假设您希望异步调用该操作,并且由于您提到使用 jquery(在您的评论中),您可能应该查看jQuery.getJSON()

如果此解决方案对您来说不够,请发布您用于视图的代码,因为问题就在那里。

于 2012-08-06T06:15:18.140 回答