jqueryajax发送数组(jqueryajax向后台传递数组以及如何在后台接收数组代码详解)

本文目录
- jqueryajax向后台传递数组以及如何在后台接收数组代码详解
- ajax怎么传递多个参数
- jquery 的$.ajax post 多维数组 给php
- jqueryajax中data可以传数组吗
- jquery ajax 传递数组 后台怎么接
- JQuery ajax传递的参数是数组该如何弄呀,接收页如何去接收数组
- jquery ajax 传递一个json数组给struts2 但是struts2就是无法接受
- jquery ajax请求的五个步骤
- jQuery datatable ajax怎样操作对象数组 [object]
jqueryajax向后台传递数组以及如何在后台接收数组代码详解
JS中的数组是弱类型的可以放任何类型(对象、基本类型),但是如果数组中放的是对象类型,传递到后台是显示的只能是对象字符串--,原因如下:
在后台接收的时候,只能用request来接收,request.getParameterValues()方法返回的是一个String,所以,应该是在前台传输的时候调用了对象的toString()方法,那么如果依然想传递对象怎么办?但是可以使用JSON字符串来实现,在后台把JSON字符串解析成JAVA对象。
也许,你要说如果是复合对象怎么办,比如如下:
public class Person {
private String username;
private String password;
private Address addr;
}Person对象里有个Address类型的addr属性,没关系,任何对象最终用到的属性值都是基本数据类型,只需要使用对应的包装类型parseInt、或者parseXXX解析即可。
实现:
OK,原理就是这么个。先看JS如何写:
var as = ;
var temp = ;
for ( var int = 0; int 《 5; int++) {
temp.push(’{"k":’);
temp.push(int);
temp.push(’,"v":’);
temp.push(int);
temp.push(’}’);
as.push(temp.join(""));
}
//Jquery中的方法,具体参考Jquery API
$.post( "servlet/AjaxServlet?m=putWarningRule",{"aa":as} );最终拼成的串就是如下样式,(只作举例)
{"k":0,"v":0}后台接收,不讨论任何框架,只需要HttpServletRequest即可
String"是为了说明问题。可以使用如下方式打印request中的所有参数
Enumeration《String》 names = request.getParameterNames();
while (names.hasMoreElements()) {
String string = (String) names.nextElement();
System.out.println(string);
}OK,至此为止,已经接收完毕,剩下的就是如何将一个JSON字符串转成一个POJO了。
/**
* 将对象转换为JSON格式的字符串
* @param obj
* @return 返回JSON字符串
*/
public
static
String toJSONAsString(Object obj){
try {
return JSONMapper.toJSON(obj).render(false);
} catch (Mapper
Exception
e) {
e.printStackTrace();
}
return null;
}
@SuppressWarnings("unchecked")
public static 《T》 T jsonToObject(String jsonStr, Class《T》 targetClass) throws TokenStreamException, RecognitionException, MapperException{
JSONValue jv = new JSONParser(new StringReader(jsonStr)).nextValue();
return (T) JSONMapper.toJava(jv,targetClass);
}
//test
public static void main(String args) throws Exception {
Person p = new Person();
p.setK("a");
p.setV("v");
String json = toJSONAsString(p);
Person np = jsonToObject(json,Person.class);
System.out.println(np.getK()+"=="+np.getV());
}request取到值后,遍历数组,挨个转换
Person p = JSONUtils.jsonToObject(jsonArr, Person.class);Person类如下:
public class Person {
private String k;
private String v;
public String getK() {
return k;
}
public void setK(String k) {
this.k = k;
}
public String getV() {
return v;
}
public void setV(String v) {
this.v = v;
}
}有时候会出现问题,后台接收不到该值。
解决办法:
设置jQuery.ajax的tradional属性
$.ajax({
url: "/xxx",
type: "GET",
data: {
"boxIds": boxIds,
"boxType": 0,
"time": new Date().getTime()
},
traditional: true,//这里设置为true
success: function(data) {
//do sth...
}
});请求参数2
这次参数不带””了,并且后台可以成功接收到该数组。
ajax怎么传递多个参数
首先要明白ajax的基本格式,下面有说明,看data,这个参数就是传值用的,里面可以传多个参数,如uid,rands....
url,类型:String,默认值: 当前页地址。发送请求的地址
data, 类型:String,发送到服务器的数据。将自动转换为请求字符串格式。GET 请求中将附加在 URL 后。查看 processData 选项说明以禁止此自动转换。必须为 Key/Value 格式。如果为数组,jQuery 将自动为不同值对应同一个名称。如 {foo:} 转换为 ’&foo=bar1&foo=bar2’
dataType,类型:String,预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如 XML MIME 类型就被识别为 XML。在 1.4 中,JSON 就会生成一个 JavaScript 对象,而 script 则会执行这个脚本。随后服务器端返回的数据会根据这个值解析后,传递给回调函数。可用值:
"xml": 返回 XML 文档,可用 jQuery 处理。
"html": 返回纯文本 HTML 信息;包含的 script 标签会在插入 dom 时执行。
"script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了 "cache" 参数。注意:在远程请求时(不在同一个域下),所有 POST 请求都将转为 GET 请求。(因为将使用 DOM 的 script标签来加载)
"json": 返回 JSON 数据 。
"jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。
"text": 返回纯文本字符串
success,当请求之后调用。传入返回后的数据,以及包含成功代码的字符串
jquery 的$.ajax post 多维数组 给php
你用的是jQuery的post方式向服务器发送数据,JavaScript是运行与浏览器端的脚本语言,不与后台语言关联的,你传递的是JavaScript的数组,后台程序是不可能认识JavaScript类型的(你的后台又不是用JavaScript代码写的)。
关键post方式本身传递数据的时候传递的字符串类型。你的参数是数组,那么传递数据前JavaScript会将数组用toString方法转换成字符串再发送到后台,因此数组就变了样子。建议换一种数据方式传递。比如:1=问卷调查&2=第二个问题&3=第三个问题
jqueryajax中data可以传数组吗
可以传数组的。你返回的data是数组吗?不是数组的话.length和size都不能用。
length是JS原生的方法,用于获取元素的个数或者对象的长度,从1开始
//用于获取对象的长度,从1开始
var length = $("#uw3c").length;
size()是jQuery中的方法,用来获取元素个数,从1开始。
var length = $("#uw3c").size();
jquery ajax 传递数组 后台怎么接
无论哪种方式,提交到后台的都只能是字符串的形式,可以在后台分离也可以在前台组装。
$.ajax({
type:"post",
data:我要传的数组,
url:...
})
首先,“我要传的数组”那里的格式应该是,data:’data=1&data=2&data=3...’这种形式,然后在后台用String params =request.getParameterValues("data");方式就可以取到了。如果是action,还可以用List《String》 data来直接获取,记得写set,get方法。
JQuery ajax传递的参数是数组该如何弄呀,接收页如何去接收数组
我以前是这么做的:
var codes=;//定义数组
$.ajax({
type: "POST", //用POST方式传输
dataType: "json", //数据格式:JSON
url: ..., //目标地址
traditional: true,
data: {
codes:codes,
},
error: function (XMLHttpRequest, textStatus, errorThrown) {...},
success: function (msg){...}
});
注意traditional: true不能少,
后台String codes接收参数,然后遍历取值,
for(int m=0;m《codes.length;m++){
String code=codes;
...
}
jquery ajax 传递一个json数组给struts2 但是struts2就是无法接受
开发中经常会遇到这种问题,碰到这种问题先不要着急。
首先:先检查一下参数名有没有问题,要确保参数名是正确的。
然后:确认一下ajax确实传递了这个json数组,比如可以alert(json);打印出来传递的json有没有问题,如果这一步也没有问题,就把项目debug然后在对应的java方法中打一个断点。再去看传过来的参数是否有问题。到这里要注意一下,有没有进到这个java方法,如果没有进来,可能是ajax方法写的有问题,如果进来了,就检查一下json。应该就可以了。
希望可以帮到你。
jquery ajax请求的五个步骤
1、使用ajax发送数据的步骤
第一步:创建异步对象
var xhr = new XMLHttpRequest();
第二步:设置 请求行 open(请求方式,请求url):
// get请求如果有参数就需要在url后面拼接参数,
// post如果有参数,就在请求体中传递 xhr.open("get","validate.php?username="+name)
xhr.open("post","validate.php");
第三步:设置请求(GET方式忽略此步骤)头:setRequestHeader()
// 1.get不需要设置
// 2.post需要设置请求头:Content-Type:application/x-www-form-urlencoded
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
第四步:设置请求体 send()
// 1.get的参数在url拼接了,所以不需要在这个函数中设置
// 2.post的参数在这个函数中设置(如果有参数)
xhr.send(null) xhr.send("username="+name);
第五步:让异步对象接收服务器的响应数据
一个成功的响应有两个条件:
xhr.onreadystatechange = function(){
if(xhr.status == 200 && xhr.readyState == 4){
console.log(xhr.responseText);
}
ajax-get方式请求案例:
var xhr = new XMLHttpRequest();
xhr.open("get","validate.php?username="+name);
xhr.send(null);
xhr.onreadystatechange = function(){
if(xhr.status == 200 && xhr.readyState == 4){
console.log(xhr.responseText);
document.querySelector(".showmsg").innerHTML = xhr.responseText;;
}
}
ajax-post方式请求案例:
var xhr = new XMLHttpRequest();
xhr.open("post","validate.php");
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xhr.send("username="+name);
xhr.onreadystatechange = function(){
// 判断服务器是否响应,判断异步对象的响应状态
if(xhr.status == 200 && xhr.readyState == 4){
document.querySelector(".showmsg").innerHTML = xhr.responseText;
}
}
二、Jquery中的Ajax
$.ajax({
type: "get",// get或者post
url: "abc.php",// 请求的url地址
data: {},//请求的参数
dataType: "json",//json写了jq会帮我们转换成数组或者对象 他已经用JSON.parse弄好了
timeout: 3000,//3秒后提示错误
beforeSend: function () {
// 发送之前就会进入这个函数
// return false 这个ajax就停止了不会发 如果没有return false 就会继续
},
success: function (data) { // 成功拿到结果放到这个函数 data就是拿到的结果
},
error: function () {//失败的函数
},
complete: function () {//不管成功还是失败 都会进这个函数
}
})
// 常用
$.ajax({
type: "get",
url: "",
data: {},
dataType: "json",
success: function (data) {
}
})
$.ajax() 都可以发
$.post(url,data,success,datatype):本质上只能发送post请求
$.get(url,data,success,datatype):本质上只能发送get请求
jQuery datatable ajax怎样操作对象数组 [object]
$(document).ready(function() {
$(’#tableId’).DataTable( {
"ajax": {
"url": "/eventMessages/refresh",
"dataSrc": ""
},
"columns": [
{ "data": "name" },
{ "data": "title" }
]
} );
} );

本文相关文章:
php数组长度怎么表示(thinkphp在模板文件中怎么求数组的长度)
2025年11月1日 04:45
vue 字符串转换成数字(vue怎么将一个数组中的一项字符串转换为数组,在哪写呢怎么写呢)
2025年10月20日 06:15
js数组转json格式(JS,实现一维数组JSON树结构的转换)
2025年10月16日 00:45
matlab字符串转字符串数组(matlab 多个字符串数组合并成一个字符串数组)
2025年10月11日 16:15
更多文章:
he agreed to help(用need to do sth.和agree to do sth. 造句)
2026年8月31日 01:00
instr函数的返回值(关于vb中InStr函数的一个小问题)
2026年1月26日 22:30
slcp是什么意思(matlab.*和matlab. s有什么区别)
2026年1月3日 12:00
db2数据库update后想恢复(你好,SQL修改错了,修改前没有备份,请问怎么还原到修改前的数据,你知道吗可以给联系方式我请教一下)
2026年9月17日 12:00
assert python用法(python:assert_raises() 怎么用啊,有哪些参数 请说得详细些,先谢谢了!)
2026年7月11日 08:30
this is it歌词好诡异(Turn The Lights On的歌词翻译)
2025年7月26日 02:30
tabletennis安卓游戏(table tennis touch多人游戏时提示game center断开链接怎么解决)
2025年8月8日 17:15
迷你qq头像(2021头像可爱呆萌男生,寻找一些头像小男孩的那种)
2026年2月14日 13:00















