场景

在Ajax请求接口返回结果后,再次请求后台Controller。原来代码

$("#book").submit(function() {
if($(this).Andrew_Validate("submit_Validate")){
$("#book > button:submit").attr("disabled","disabled").text("订单提交中...");
$('#clause').attr("disabled","disabled");
var actionurl = $(this).attr("action"); //提交路径
var data = $(this).serialize();
console.log(data);
$.ajax({
async : true,
cache : false,
type : 'POST',
url : actionurl,
data : data,
success : function(data) {
if("200"==data.statusCode){
//请求成功
window.location.href = "${ctx}/frontPage/passFlight/GJbookPay.html?orderId="+data.result;
}
if("300"==data.statusCode){
$("#book > button:submit").removeAttr("disabled","disabled").text("下一步,去支付");
$('#clause').removeAttr("disabled","disabled");
if(-1==data.result){
//请求失败处理函数
webToast(data.message, "middle", "mask", 1000);
}else{
var contactName=$("#contactName").val();
var contactAreaCode=$("#contactAreaCode").val();
var contactAreaMobile=$("#contactAreaMobile").val();
var email=$("#email").val();
var phone=$("#phone").val();
var contactCookie = $.cookie("bus__contact");
//将联系人信息存储到cookie中
if(contactCookie && contactCookie!=""){
//查看是否是当前登录用户的填写信息
contactCookies=contactCookie.split(";"); //字符分割
var tempCookie;
for(j = 0; j < contactCookies.length; j++) {
tempCookie=contactCookies[j].split(",");
if(tempCookie[4]==phone){
var s=contactName+','+contactAreaCode+','+contactAreaMobile+','+email+','+phone;
contactCookies.splice(j,1,s);
$.cookie('bus__contact',contactCookies);
}
else{
var contactResult=contactCookie+";"+contactName+','+contactAreaCode+','+contactAreaMobile+','+email+','+phone;
$.cookie('bus__contact',contactResult);
}
}
}
else{
var contactResult=contactName+','+contactAreaCode+','+contactAreaMobile+','+email+','+phone;
$.cookie('bus__contact',contactResult);
}
Andrew_Popupwin({
dom: "#login_dialog_plug_popupWin", //弹窗内容的布局
position: "middle", //位置类型(top,bottom,left,right,middle)
effectIn: "bounceInDown", //弹窗显示效果
effectOut: "bounceOutDown", //弹窗消失效果
maskPosition:"11", //Mask的z-index数值
closeBtn: ".login_dialog_plugin_close" //关闭弹窗按钮
})
}
}
},
error : function(err) {
$("#book > button:submit").removeAttr("disabled","disabled").text("下一步,去支付");
$('#clause').removeAttr("disabled","disabled");
//请求失败处理函数
webToast("请求错误", "middle", "mask", 1000);
}
});
}
return false;
});

避免踩坑

后台Controller返回的是对象,直接接受后使用

window.location.href = "${ctx}/frontPage/passFlight/GJbookPay.html?orderId="+data.result;

是不行的会提示

Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986

如果是只传递一个参数比如ID等则就可以。

修改为:

$("#book").submit(function() {
if($(this).Andrew_Validate("submit_Validate")){
$("#book > button:submit").attr("disabled","disabled").text("订单提交中...");
$('#clause').attr("disabled","disabled");
var actionurl = $(this).attr("action"); //提交路径
var data = $(this).serialize();
console.log(data);
$.ajax({
async : true,
cache : false,
type : 'POST',
url : actionurl,
data : data,
success : function(data) {
debugger
if("200"==data.statusCode){
debugger
$.ajax({
async : true,
cache : false,
type : 'POST',
url : "${ctx}/frontPage/passFlight/GJbookPay.html",
data : data.result
});

//window.location.href = "${ctx}/frontPage/passFlight/GJbookPay.html?orderId="+data.result;
}
if("300"==data.statusCode){
$("#book > button:submit").removeAttr("disabled","disabled").text("下一步,去支付");
$('#clause').removeAttr("disabled","disabled");
if(-1==data.result){
//请求失败处理函数
webToast(data.message, "middle", "mask", 1000);
}else{
var contactName=$("#contactName").val();
var contactAreaCode=$("#contactAreaCode").val();
var contactAreaMobile=$("#contactAreaMobile").val();
var email=$("#email").val();
var phone=$("#phone").val();
var contactCookie = $.cookie("bus__contact");
//将联系人信息存储到cookie中
if(contactCookie && contactCookie!=""){
//查看是否是当前登录用户的填写信息
contactCookies=contactCookie.split(";"); //字符分割
var tempCookie;
for(j = 0; j < contactCookies.length; j++) {
tempCookie=contactCookies[j].split(",");
if(tempCookie[4]==phone){
var s=contactName+','+contactAreaCode+','+contactAreaMobile+','+email+','+phone;
contactCookies.splice(j,1,s);
$.cookie('bus__contact',contactCookies);
}
else{
var contactResult=contactCookie+";"+contactName+','+contactAreaCode+','+contactAreaMobile+','+email+','+phone;
$.cookie('bus__contact',contactResult);
}
}
}
else{
var contactResult=contactName+','+contactAreaCode+','+contactAreaMobile+','+email+','+phone;
$.cookie('bus__contact',contactResult);
}
Andrew_Popupwin({
dom: "#login_dialog_plug_popupWin", //弹窗内容的布局
position: "middle", //位置类型(top,bottom,left,right,middle)
effectIn: "bounceInDown", //弹窗显示效果
effectOut: "bounceOutDown", //弹窗消失效果
maskPosition:"11", //Mask的z-index数值
closeBtn: ".login_dialog_plugin_close" //关闭弹窗按钮
})
}
}
},
error : function(err) {
$("#book > button:submit").removeAttr("disabled","disabled").text("下一步,去支付");
$('#clause').removeAttr("disabled","disabled");
//请求失败处理函数
webToast("请求错误", "middle", "mask", 1000);
}
});
}
return false;
});