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后台传值方式踩坑相关推荐
- Jquery中使用ajax请求SSM后台时提示:org.springframework.http.converter.HttpMessageNotReadableException: Could no
场景 Jquery中使用ajax向SSM后台请求数据时提示: org.springframework.http.converter.HttpMessageNotReadableException: C ...
- Ajax请求SSM后台时提示:Invalid character found in the request target. The valid characters are defined in RF
场景 前端使用SSM请求后台时提示: Invalid character found in the request target. The valid characters are defined i ...
- 前台发送 ajax 请求到后台传递数组参数
前台发送 ajax 请求到后台,发现直接传递数组,后台是接收不到的,需要 ajax 加上一个 traditional 属性 var arr = ["a","b" ...
- IE浏览器中访问jsp页面,页面不执行ajax请求,后台控制台报错
问题描述:IE浏览器中访问jsp页面,页面不执行ajax请求,后台控制台报错:java.lang.IllegalArgumentException: Invalid character found i ...
- 前台ajax请求php后台返回成功却进error方法解决
前台ajax请求php后台返回成功却进error方法解决 参考文章: (1)前台ajax请求php后台返回成功却进error方法解决 (2)https://www.cnblogs.com/anniey ...
- 使用ajax async,Ajax请求async有哪些方式?应该如何使用
这次给大家带来Ajax请求async有哪些方式?应该如何使用,Ajax请求async的注意事项有哪些,下面就是实战案例,一起来看一下. test.html代码: asy.js代码:function t ...
- ajax 取值 返回map_springboot|前端发ajax请求到后台Controller及常见的坑
前端发ajax请求 这块是web的基础,发web请求大概需要以下几步1.引用web相关的依赖2.前端页面引入jquery.js3.编写ajax请求4.编写对应的Controller 引入web相关的依 ...
- jQuery发送含有数组参数的ajax请求以及后台Struts2的OGNL解析错误
当使用jquery1.3以上版本时,进行ajax参数传值时,会出现以下的一个错误: ognl.ExpressionSyntaxException: Malformed OGNL expression: ...
- java后台处理ajax请求_java后台怎么对ajax请求的内容进行xss转义?
找了几个java后台拦截xss的代码,大致都是下面这样 package com.ibm.web.beans; import java.util.Enumeration; import javax.se ...
最新文章
- linux读取每条内存使用,Linux c读取系统内存使用信息
- C# .net web.config配置access连接字符串
- BOOST内存管理(二) --- boost::pool
- T-SQL | 你需要了解的执行计划
- CSS属性之attr()
- Quartz2D指定显示范围
- 分享实录 | 企业CICD规模化落地浅析
- Java学习前,需要掌握的一些基础知识
- C#中采用SHA1或MD5加密字符串的函数
- Python常用运算符含义与用法演示
- python基础系列教程——数据结构(列表、元组、字典、集合、链表)
- Android常见音频通路(十四)
- 系统运维包括哪些内容_UI设计内容包括哪些?
- c#【 网络日志解析工具】开发篇-【媒体预览功能】--base64,webp响应解码为图片-》可做复制base64进行图片查看
- ZPL效果在线打印测试和相关手册及编程语言资料
- AE快速输出GIF动图格式插件:GifGun for Mac(支持ae2022)
- tp框架中构造函数__construct()与初始化函数_initialize()的区别
- 网站支付宝登录授权具体实现
- 修改win10更新服务器,修改win10更新服务器地址
- 【多元统计分析】Python实现对应分析
热门文章
- 每天学一点儿shell:shell字符串变量的基本操作
- Git提交代码时报 Please tell me who you are
- mysql核心数据库_从MySQL基础进军MySQL核心架构 178集MySQL数据库核心基础视频教程 MySQL基础案例教程...
- QString之arg用法
- python手机销售系统详细设计_数据库详细设计文档 .doc
- kylin安装mysql_源码安装mysql
- sql 发送邮件网络附件_利用VBA发送附件电子邮件
- windows 搭建kms服务器激活_自建KMS激活服务器的两种方法
- swoole不是php,Swoole
- 石大在线c语言在线考试填空题答案,奥鹏石大远程在线考试《钻井工程》-参考答案...