Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery datatable将字符串数组作为参数传递_Jquery_Asp.net_Asp.net Mvc_Datatable - Fatal编程技术网

Jquery datatable将字符串数组作为参数传递

Jquery 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": "

我想将字符串数组作为参数发送到服务器端。但这不起作用。但我可以将字符串作为参数发送到服务器端,而不会出现任何问题。这些数据发送到mvc控制器。我使用的是jquery数据表1.10.16

 $(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(',');
                 },
              }