Java 成功后如何在servlet中检索JSON对象

Java 成功后如何在servlet中检索JSON对象,java,jquery,Java,Jquery,我使用jQuery/AJAX调用将控制传递给servlet,并在成功后将控制发送给另一个servlet。不确定如何从first sevlet到second检索JSON对象集。这是我的伪代码 orders.jsp --------------- // display orders // on click calls following ajax $.ajax({ url : "processorder", type : "POST", dataType : "text"

我使用jQuery/AJAX调用将控制传递给servlet,并在成功后将控制发送给另一个servlet。不确定如何从first sevlet到second检索JSON对象集。这是我的伪代码

orders.jsp
---------------
// display orders
// on click calls following ajax 

$.ajax({
    url : "processorder",
    type : "POST",
    dataType : "text",
    data : formData,                    
    success : function(data, textStatus, jqXHR) {

        var successUrl = "checkout";    //upon success pass the control to checkout.java
        window.location.href = successUrl;
        return false;
    },
    error : function(jqXHR, textStatus, errorThrown) {
        alert("Oops ! Error occurred !");
    }
});// End of ajax



processorder.java (servlet)
-------------------------------

Processes data 
Set some session variables

List<OrderDetails> newod = new ArrayList<OrderDetails>();
Gson gson = new Gson();
JsonObject jsonObject = new JsonObject();
JsonElement orderDetailElement = null; 

//update orderDetailElement


orderDetailElement = gson.toJsonTree(newod);
jsonObject.add("OrderDetails", orderDetailElement);

request.setAttribute("OrderDetails", newod);    //set the session with orderdetails

out.print(jsonObject.toString());   // write object to json



checkout.java (servlet)
----------------------------
**How can I access JSON object which I am sending from processorder?**
orders.jsp
---------------
//显示订单
//ajax之后的点击调用
$.ajax({
url:“processorder”,
类型:“POST”,
数据类型:“文本”,
数据:formData,
成功:函数(数据、文本状态、jqXHR){
var successUrl=“checkout”//成功后,将控件传递给checkout.java
window.location.href=成功URL;
返回false;
},
错误:函数(jqXHR、textStatus、errorshown){
警报(“哎呀!发生错误!”);
}
});// ajax的终结
processorder.java(servlet)
-------------------------------
处理数据
设置一些会话变量
List newod=newarraylist();
Gson Gson=新的Gson();
JsonObject JsonObject=新的JsonObject();
JsonElement orderDetailElement=null;
//更新orderDetailElement
orderDetailElement=gson.toJsonTree(newod);
add(“OrderDetails”,orderDetailElement);
setAttribute(“OrderDetails”,newod)//使用orderdetails设置会话
out.print(jsonObject.toString());//将对象写入json
checkout.java(servlet)
----------------------------
**如何访问从processorder发送的JSON对象**

有什么想法吗?

您需要在第一个ajax调用的success函数中进行ajax调用

差不多

$.ajax({
  url : "processorder",
  type : "POST",
  dataType : "text",
  data : formData,                    
  success : function(response) {

    $.ajax({
              url : "checkout",
              type : "POST",
              dataType : "text",
              data : response,                    
              success : function(response) {
              },
              error : function(jqXHR, textStatus, errorThrown) {
                alert("Error ");
              }
    });
 },
 error : function(jqXHR, textStatus, errorThrown) {
   alert("Oops ! Error occurred !");
 }
});

谢谢你的回复。所以我尝试了你建议的nested.ajax解决方案。然而,我收到了“Error”警报,所以在checkout servlet中,我尝试执行request.getParamater(“response”);这是空的,最后我将请求重定向到.JSP页面,但这也没有发生。你知道我错过了什么吗在第一个ajax调用的成功函数中,看看你是否得到了正确的响应。另外,将第二个ajax调用的数据类型设置为properlyYes,我将得到正确的响应。它甚至调用“checkout”servlet,但最终重定向并没有发生在JSP页面上。然而,不知何故,控制返回到.ajax错误函数。尝试使用firebug进行调试,但还没有成功。因此,使用firebug,我看到的是POST to checkout被称为&response是我真正想看到的JSP页面,但它没有被重定向,知道吗?不知道我错过了什么