如果您想了解SSH框架中使用Ajax向后台发送参数,存在乱码的问题的相关知识,那么本文是一篇不可错过的文章,我们将对sshajax进行全面详尽的解释,并且为您提供关于.ajax向后台传递数组(转)、a
如果您想了解SSH框架中使用Ajax向后台发送参数,存在乱码的问题的相关知识,那么本文是一篇不可错过的文章,我们将对ssh ajax进行全面详尽的解释,并且为您提供关于.ajax向后台传递数组(转)、ajax – 如何使用jquery $.get()发送参数、ajax向后台传中文乱码问题、ajax向后台传递中文数据乱码问题的有价值的信息。
本文目录一览:- SSH框架中使用Ajax向后台发送参数,存在乱码的问题(ssh ajax)
- .ajax向后台传递数组(转)
- ajax – 如何使用jquery $.get()发送参数
- ajax向后台传中文乱码问题
- ajax向后台传递中文数据乱码问题
SSH框架中使用Ajax向后台发送参数,存在乱码的问题(ssh ajax)
var urlAddr = '<%=basePath%>getSpecialtyUserAction.action?dept=' + $(this).val();
urlAddr = encodeURI(urlAddr);
urlAddr = encodeURI(urlAddr);
$.ajax({
url :urlAddr,
type:'get',
dataType:'json',
ContentType:'application/json; charset=utf-8',
success:function(data){
//var datas = eval('(' + data.teachers +')'); //需要将字符串转换成数组进行处理
var datas = eval(data.teachers);
for(i=0; i< datas.length; i++){
alert(datas[i].gzbh + " " + datas[i].name);
}
alert("人员数目: " + datas.length);
},
error:function(msg){
Notice("加载教职员工数据异常!");
}
});
需要注意,对你所传递的参数进行处理,在前端进行encodeURI两次,在后台界面中使用dept = java.net.URLDecoder.decode(dept,"UTF-8"); 来对编码进行处理,注意在页上设置你的编码格式
.ajax向后台传递数组(转)
js部分代码
//创建一个测试数组
var boxIds = new Array();
boxIds.push(12182);
boxIds.push(12183);
boxIds.push(12184);
//向后台交互
$.ajax({
url: "/xxx",
type: "GET",
data: {
"boxIds": boxIds,
"boxType": 0,
"time": new Date().getTime()
},
success: function(data) {
//do sth...
}
});
后台controller代码(SpringMVC)
@ResponseBody
@RequestMapping(value = "/box/changeLock")
public String changeLock(final Long[] boxIds, final int boxType) {
return locker_ChangeLockService.changeLock(boxIds, boxType);
}
观察浏览器中发送的请求,可以发现参数如下:
可以看到,参数的名字为boxIds[]而不是我们所定义的boxIds,也就是说,当传递数组时,会在我们的数组名称后自动加上”[]”,所以后台接不到。
解决办法:
设置jQuery.ajax的tradional属性 :traditional: true,//这里设置为true
$.ajax({
url: "/xxx",
type: "GET",
data: {
"boxIds": boxIds,
"boxType": 0,
"time": new Date().getTime()
},
traditional: true,//这里设置为true
success: function(data) {
//do sth...
}
});
修改之后重新发出请求,观察浏览器:
请求参数2
这次参数不带”[]”了,并且后台可以成功接收到该数组。
需要特别注意下traditional默认值是false。ajax做数据处理时,是通过jQuery.param( obj, traditional )该方法进行处理。
jquery1.4版本以后
traditional参数,默认false的时候如果是{a:{b:''value''}}是处理成a[b],这样形式,如果是数组:data:{a:[1,2]},是解析成a[]=1&a[]=2,这种方式后台确实要做兼容(取a[b]或a[])来取值。
在数组情况下把traditional参数设置成true,是解析成a=1&a=2,对后台直接通过a拿数据。但是实验了下object情况,把traditional设置成true,转成了a=[object+Object],这样就是费的了。false时解析成上面的形式应该就是类型指示作用,我看到这种格式就知道请求数据是Array还是object了,true就是按照form提交的方式传值。
ajax – 如何使用jquery $.get()发送参数
这是我的功能:
$(function() { var availableProductNames; $.get("manageproducts.do?option=1",function(data){ availableProductNames = data.split(",");; alert(availableProductNames); $("#nameInput").autocomplete({ source: availableProductNames }); }); });
这似乎不起作用当我使用request.getParameter(“option”);我在我的servlet中得到一个null;
如果我键入到浏览器http://www.myite.com/manageproducts.do?option=1的链接,它的工作是完美的。
我也试过:
$.get( "manageproducts.do?",{option: "1"},function(data){}
这也不行。
你能帮我么?
编辑:
也试过
$.ajax({ type: "GET",url: "manageproducts.do",data: "option=1",success: function(msg){ availableProductNames = msg.split(","); alert(availableProductNames); $("#nameInput").autocomplete({ source: availableProductNames }); } });
仍然得到相同的结果。
$.get('manageproducts.do',{ option: '1' },function(data) { ... });
因为它将发送相同的GET请求。
ajax向后台传中文乱码问题
1.把传的值保存在encodeURI中,记得是双encodeURI
url:'json/selectUser.action?param='+encodeURI(encodeURI("中文")),
2.在action中解码
HttpServletRequest request = ServletActionContext.getRequest(); String param = request.getParameter("param"); param = URLDecoder.decode(param,"UTF-8");
3.输出param
System.out.println(param);
ajax向后台传递中文数据乱码问题
对需要传递的中文参数先进行两次转码: 1.js文件中使用encodeURI()方法。
var url = "Validate.jsp?id=" + encodeURI(encodeURI(idField.value));
2.在后台中对传递的参数进行URLDecoder解码
String username = URLDecoder.decode(request.getParameter("id"),"UTF-8");
我们今天的关于SSH框架中使用Ajax向后台发送参数,存在乱码的问题和ssh ajax的分享就到这里,谢谢您的阅读,如果想了解更多关于.ajax向后台传递数组(转)、ajax – 如何使用jquery $.get()发送参数、ajax向后台传中文乱码问题、ajax向后台传递中文数据乱码问题的相关信息,可以在本站进行搜索。
本文标签: