#前言
有響應數據,但是不跳轉,也沒有報錯。
(浏覽器——》調試——》網絡:可以看到響應數據就是結果頁面registerSuccess.jsp的內容)
#整個流程的代碼
1.請求頁面:index.jsp
// 遮罩層-注冊
function register1(){
// 提交表單
var form = document.getElementById("register");
var param = $("#register").serialize();
$.post(form.action,
param,
function(json){
if(json.success){
// 退出遮罩層
$.unblockUI();
}else{
alert("注冊失敗!");
}
},
"json");
}
2.配置文件
<struts>
<package name="loginPackage" extends="struts-default"
namespace="/login">
<action name="register" class="loginControllerBean" method="register">
<result name="register">/registerSuccess.jsp</result>
</action>
</package>
</struts>
3.業務控制器:RegisterController.java
public String register(){
//
loginBusiness.register(user);
//
try {
response.getWriter().print("{\"success\":\"true\",\"data\":\"\"}");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//
return "register";
}
#結語
從請求到業務控制器(即Action類),然後一直到Action的方法返回一個代表結果頁面的字符串都是沒有任何問題的,而且浏覽器也收到了響應數據。但這裡有2個問題,第一,jquery發出post請求之後沒有執行回調函數,這是為什麼?第二,客戶端浏覽器已經接收到響應數據,但是struts2沒有成功跳轉,為什麼?
1、有json響應數據的話,就不應該再在業務控制器裡進行跳轉。
2、如果要進入到另一個頁面,應該在jquery的回調函數裡進行請求。
參考:服務器的響應數據