2013-02-16 55 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