2013-02-16 36 views
0

我在我的應用程序中使用Struts 1.2。檢索HTML中的JSON javascript

我試圖實現:

1)使用javascript動作 2)返回JSON對象從檢索動作 3)響應和解析JSON響應Ajax請求javascript 4)使用該值。

我與前兩個步驟進行,但與第三個(檢索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值時,我得到了正確的格式,例如t他:{"02-19-2013":"02-19-2013"}

但是當我嘗試這在javascript:

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

我沒有得到這得到了早些時候在控制檯即{"02-19-2013":"02-19-2013"}打印的JSON值。不幸的是,此警報語句顯示我的整個HTML文件

請讓我知道了什麼錯誤:(

感謝,

回答

-1

更清潔的方式做是使用Struts2的JSON的,插件和讓框架爲你做

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

的提升,你不必在你的Action類的響應對象和GSON染指,映射將照顧它。

Struts 2 And JSON Example

+0

感謝您的回覆。不幸的是我的應用程序運行在Struts 1.2上。任何可能的解決方案? – WhoAmI 2013-02-16 18:05:43

+0

對我來說看起來很好,你可以通過一個Tamper Data插件來看看你的響應,只是爲了確保你設置的響應類型和其他頭文件在瀏覽器中被接收 – Sudhakar 2013-02-16 18:46:01