Ajax请求SSM后台传值方式踩坑
生活随笔
收集整理的這篇文章主要介紹了
Ajax请求SSM后台传值方式踩坑
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
場景
在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) {debuggerif("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;});?
總結
以上是生活随笔為你收集整理的Ajax请求SSM后台传值方式踩坑的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ajax请求SSM后台时提示:Inval
- 下一篇: Ajax提交后Moedl And Vie