GVKun编程网logo

SSH框架中使用Ajax向后台发送参数,存在乱码的问题(ssh ajax)

10

如果您想了解SSH框架中使用Ajax向后台发送参数,存在乱码的问题的相关知识,那么本文是一篇不可错过的文章,我们将对sshajax进行全面详尽的解释,并且为您提供关于.ajax向后台传递数组(转)、a

如果您想了解SSH框架中使用Ajax向后台发送参数,存在乱码的问题的相关知识,那么本文是一篇不可错过的文章,我们将对ssh ajax进行全面详尽的解释,并且为您提供关于.ajax向后台传递数组(转)、ajax – 如何使用jquery $.get()发送参数、ajax向后台传中文乱码问题、ajax向后台传递中文数据乱码问题的有价值的信息。

本文目录一览:

SSH框架中使用Ajax向后台发送参数,存在乱码的问题(ssh 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向后台传递数组(转)

.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()发送参数

ajax – 如何使用jquery $.get()发送参数

我试图做一个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
    });   
     }
      });

仍然得到相同的结果。

如果你说它在浏览器中直接访问manageproducts.do?option=1,那么它应该适用于:
$.get('manageproducts.do',{ option: '1' },function(data) {
    ...
});

因为它将发送相同的GET请求。

ajax向后台传中文乱码问题

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向后台传递中文数据乱码问题

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向后台传递中文数据乱码问题的相关信息,可以在本站进行搜索。

本文标签: