Jquery datatable将字符串数组作为参数传递
我想将字符串数组作为参数发送到服务器端。但这不起作用。但我可以将字符串作为参数发送到服务器端,而不会出现任何问题。这些数据发送到mvc控制器。我使用的是jquery数据表1.10.16Jquery datatable将字符串数组作为参数传递,jquery,asp.net,asp.net-mvc,datatable,Jquery,Asp.net,Asp.net Mvc,Datatable,我想将字符串数组作为参数发送到服务器端。但这不起作用。但我可以将字符串作为参数发送到服务器端,而不会出现任何问题。这些数据发送到mvc控制器。我使用的是jquery数据表1.10.16 $(document).ready(function() { $('#example').DataTable( { "processing": true, "serverSide": true, "ajax": { "url": "
$(document).ready(function() {
$('#example').DataTable( {
"processing": true,
"serverSide": true,
"ajax": {
"url": "test/getall",
"data": function ( d ) {
d.Ids = ["123", "333", "444"];
}
}
} );
} );
您可以选择向服务器发送数据的另一种方式。
如果您使用逗号发送数据,请使用“123333444”之类的字符串
然后在服务器端,您可以通过内置的explode函数使其成为一个数组,正如@tetsuyayayamamoto建议的那样,可以通过向请求中添加“contentType”:“application/json”并使用return json.stringify(d)将数据作为json返回
$(document).ready(function() {
$('#example').DataTable( {
"processing": true,
"serverSide": true,
"ajax": {
"url": "test/getall",
"contentType": "application/json",
"data": function ( d ) {
d.Ids = ["123", "333", "444"];
return JSON.stringify(d);
}
}
} );
} );
您可以使用整数数组,也许这段代码会对您有所帮助
"ajax": {
"url": "testUrl",
"data": function(d) {
d.ids=integerArray.join(',');
},
}
我不知道jquery datatable,但也许您可以使用array.join()将其转换为字符串?使用
'contentType':“application/json”
和返回json.stringify(d.Ids)
将数组序列化为json格式。确保控制器操作方法的参数为字符串数组。@雷:是的,这是可能的。作为字符串,我可以提交到服务器端,然后在服务器端进行分解。但是我想知道作为字符串数组传递到服务器端的方法。@TetsuyaYamamoto,或者只使用traditional:true
(因为它是一个简单的值数组)控制器方法的签名是什么?都“contentType”:“application/json”
和返回json.stringify(d)代码>完全没有必要。JSON是预期的,其他任何东西都会失败,data()
不期望返回值,意思是你处理d
文本,字符串化它是没有意义的。@davidkonrad:是的,如果没有这两个,只要你不将数组传递给服务器端,它就可以工作。当您尝试将数组作为参数传递时,问题就出现了。那么,我想这是服务器端的问题吧?后端脚本未写入或准备接受数组?我刚刚在PHP中尝试了这个例子(没有ASP),没有contentType
和字符串化,$\u GET['id']
回显字符串[“123”、“333”、“444”]
,所以后端脚本只需要将其解析为一个数组?顺便说一句,你有没有考虑过cache
对它如何突然工作有一些影响?不管怎么说,很好,你成功了:)@davidkonrad,asp.net-mvc不是php。OP确实需要contentType:“application/json”
和json.stringify(d);
或traditional:true,
在ajax选项中work@StephenMuecke,是的,PHP不是ASP,而且…?我们在这里是客户端。DataTables已经在后台对数据参数进行了字符串化,而且正如所说的,它甚至没有注意到返回值,数据回调只是对jQuery AJAX的DataTables功能的改进,这是让您“动态”处理数据文字,请参见
"ajax": {
"url": "testUrl",
"data": function(d) {
d.ids=integerArray.join(',');
},
}