0

アプリケーションで Struts 1.2 を使用しています。

私が達成しようとしていること:

1) アクションに JavaScript を使用して ajax リクエストを送信する 2) アクションからの応答として JSON オブジェクトを返す 3) JavaScript で JSON 応答を取得して解析する 4) 値を使用して。

最初の 2 つの手順は完了しましたが、3 番目の手順 (JSON の取得) に悩まされました。

Javascript コード:

function getTransactionId(transactionId){

        var xhr = new XMLHttpRequest();
         xhr.onreadystatechange = function(){               

         if(xhr.readyState == 4){               

            if(xhr.status == 200){
                alert(xhr.responseText);
                //var p = JSON.parse(xhr.responseText);
                //alert(p);
            }
         }
        }; 
        xhr.open("POST", "returnMedia.do?transactionId=" + transactionId, true);  
        xhr.send(null); 

    }

アクションコード:

String actualReturnDateJSON = new Gson().toJson(actualReturnDateMap);       
System.out.println(actualReturnDateJSON);
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().print(actualReturnDateJSON);

ここで JSON 値をコンソールに出力すると、次のような正しい形式が得られます。{"02-19-2013":"02-19-2013"}

しかし、JavaScriptでこれを試すと:

if(xhr.status == 200){
                alert(xhr.responseText);
                //var p = JSON.parse(xhr.responseText);
                //alert(p);
            }

以前にコンソールに出力された JSON 値を取得していません{"02-19-2013":"02-19-2013"}。残念ながら、この警告文には HTML ファイル全体が表示されています

何がうまくいかないのか教えてください:(

ありがとう、

4

1 に答える 1

-1

もっとクリーンな方法は、struts2-json-plugin を使用して、フレームワークに持ち上げさせることです。

   <package name="default" namespace="/" extends="json-default">
      <action name="getTransactionId" 
           class="your action class">
           <result type="json" />
      </action>
    </package>

また、アクション クラスで応答オブジェクトと GSON をいじる必要はありません。マッピングによって処理されます。

Struts 2 と JSON の例

于 2013-02-16T17:39:31.237 に答える