Java 成功后如何在servlet中检索JSON对象
我使用jQuery/AJAX调用将控制传递给servlet,并在成功后将控制发送给另一个servlet。不确定如何从first sevlet到second检索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"
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页面,但它没有被重定向,知道吗?不知道我错过了什么