0

我在我的应用程序中使用 Struts 1.2。

我想要达到的目标:

1) 使用 javascript 向操作发送 ajax 请求 2) 返回 JSON 对象作为操作的响应 3) 在 javascript 中检索和解析 JSON 响应 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 值时,我得到了正确的格式,如下所示:{"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 回答