1

私の問題:json文字列がファイルとして返されます。getJSONResult アクションを呼び出すと、JSON 文字列を含むファイルが表示され、開いたりダウンロードしたりできます。

設定の問題だと思いますが、見つかりません。誰かが私を助けてくれたらとてもうれしいです、ありがとう!

アクションを使用してメソッドを実行してデータを取得する送信を備えたオープニングフォームがあります。それから、jQueryを機能させることができる唯一の方法は、「成功」を返すだけのアクションと実行方法を実行し、3回目のアクションで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

Google Chrome でこの問題が発生したことがないため、Internet Explorer を使用していると思います (また、すべてをきれいにフォーマットするプラグインもあります: https://chrome.google.com/webstore/detail/ chklaanhfefbnpoihckbnefhakgolnmc )

実際に IE を使用している場合は、検索してみると、問題に対して同じ解決策を提供する 2 つのページが見つかりました。

JSON を Internet Explorer で表示する

ダウンロードを申し出るのではなく、単純に application/json を表示するように IE を説得するにはどうすればよいですか?

ソリューションの主な要点は次のとおりです。

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 として保存してから実行します。注: これは、IE 7、8、9 を使用して Windows XP および Windows 7 でテストされています。
于 2012-08-08T19:15:30.463 に答える
1

問題はありません(つまり、struts2の問題)。これは、chromeを使用していて、ajaxを使用せずにjsonの結果を返すアクションを呼び出しているためです。一部のブラウザは、個人的にダウンロードダイアログのみを提供します。Chromeがブラウザウィンドウにjson文字列を大騒ぎせずに表示するのが本当に好きです...デバッグに最適です。

更新ダウンロードダイアログが表示されるIEの最初のスクリーンショットは見ていません

これを防ぐには...アクションを非同期で呼び出したいと思います。(コメントで)jqueryの使用について言及しているので、おそらくjQuery.getJSON()を参照する必要があります。

この解決策では十分ではない場合は、問題がそこにあるため、ビューに使用しているコードを投稿してください。

于 2012-08-06T06:15:18.140 に答える