【问题解决】前台AJAX请求向Java后台传时+号变为空格—其他特殊字符解析出错也可参考解决

转载请注明出处http://blog.csdn.net/qq_26525215

本文源自大学之旅_谙忆的博客

问题是这样的在前台输入+++ 3个加号然后提交到后台在前台页面显示是没有问题的

在后台用req.getParameter(“comment”);获得内容结果为3个空格也就是无法获得+号怎么解决呢。

第一种解决方案
我们可以在前台获得字符串的时候将”+”号转换为”%2B”.

comment=comment.replace(/\+/g,"%2B");// \为转义

我自己实践了一些发现此方法可以挺好的一种方法

第二种解决方案
在我们服务器端执行的也就是我们自己将空格转换为+号但是思考一下就会发现此方法也不行因为会将空格与+号混淆。

第三种解决方案
也就是自己构建特殊字符,来写一个简单的传输协议代替+号
例如我们在前台的时候如果有人输入+号我们就把它转换为: “*jiahao;”这个字符串可以自己定义然后我们后台再解析成对应的+号。
前台JS

comment=comment.replace(/\+/g,"*jiahao;");// \为转义

Java后台解析回去:

message = message.replace("*jiahao;", "+");
//注意这里如果用replaceAll要注意正则表达式中的特殊字符转义

此种方法可行但是麻烦啊还得自己转来转去的。

第四种解决方案
前台JS使用encodeURIComponent函数。

comment=window.encodeURIComponent(comment);

其实这个函数也就是将+替换成了%2B
所以如果遇到特殊符号了用这个函数就可以了

还有encodeURI()这个函数解决不了+号这个特殊字符的传参变成空格的问题
网上还有的教程地方把%2B写成了2b%真的是让人挺无语了。

本文章由[谙忆]编写 所有权利保留。
欢迎转载分享是进步的源泉。

转载请注明出处http://blog.csdn.net/qq_26525215

本文源自大学之旅_谙忆的博客

时间: 2024-08-31 21:31:58

【问题解决】前台AJAX请求向Java后台传时+号变为空格—其他特殊字符解析出错也可参考解决的相关文章

正在学java 后台传到前台的中文为??? 这是个什么鬼 在线等

问题描述 正在学java 后台传到前台的中文为??? 这是个什么鬼 在线等 后台代码如下: public String paging(){ HttpServletRequest req=ServletActionContext.getRequest(); HttpServletResponse resp=ServletActionContext.getResponse(); int pageIndex=Integer.parseInt(req.getParameter("pageIndex&qu

ajax请求后台下载zip压缩文件问题,后台返回的是流前台不提示下载。附上ajax请求代码合后台代码

问题描述 ajax请求后台下载zip压缩文件问题,后台返回的是流前台不提示下载.附上ajax请求代码合后台代码 前台: $.ajax({ type:"POST", url:"app/downloadProduct", data:{nid:nid,name:name}, dataType:"text", success:function(data){ console.log(data); if(data!=null){ alert("ur

利用ajax获得后台传过来的json,前端无法解析,对前端不是很深入,求指导

问题描述 利用ajax获得后台传过来的json,前端无法解析,对前端不是很深入,求指导 这是servlet:package com.kj.servlet; import java.io.IOException;import java.util.ArrayList;import java.util.List; import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servle

Ajax向后台传json格式的数据出现415错误的原因分析及解决方法_AJAX相关

问题描述: ajax往后台传json格式数据报415错误,如下图所示 页面代码 function saveUser(){ var uuId = document.getElementById("uuid").value; var idCard = document.getElementById("idCard").value; alert(uuId+idCard); // var result = new Object(); // result.uuId = uuI

ajax提交到java后台之后处理数据的实现

环境:eclipse+struts 要实现的效果:点击按钮提交数据到后台之后回到前台显示出来数据 index.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN&quo

mysql-angularJS如何与JAVA后台传数据

问题描述 angularJS如何与JAVA后台传数据 java是ssh框架写的,在action里返回值试了string,jsonobject,jsonarray都不行,不知道是我方式错了还是类型错了.求大牛指点,最好有实际可参考,谢谢. 解决方案 http://www.simplecodestuffs.com/struts2-angularjs-integration/

前台ajax提交数据,后台接受,存入数据库

问题描述 前台ajax提交数据,后台接受,存入数据库 "{"1":{"top":125,"left":376,"process_to":[]},"2":{"top":339,"left":378,"process_to":[]},"3":{"top":280,"left":840

javaScript(拼写树形)+ajax请求,去后台查找数据

第一步:页面加载完成时,利用jquery中的一函数,调用js方法,js方法,发送ajax请求,去后台查找父类权限集合,响应回来json格式的数据,对数据进行操作,往页面上添加内容 1 //页面初始化加载菜单内容 2 $(document).ready(function(){ 3 loadPower(0); 4 }); 5 6 //加载一级权限菜单 7 function loadPower(pId){ 8 $.ax({ 9 type: "get", 10 url: "<%

jquery ajax前台通过json格式往后台传数据 后台对象接到的老是null

问题描述 前台的 静态json数据var resContactInfos1 = [{ metadataId: '001',orgCode:'001',orgName: 'zhangsan', address: '20',             email: 'shanghai'         },         {         metadataId: '002',         orgCode: '002',         orgName: 'beijing',         a