Javascript 如何在服务器端处理的数据表上使用搜索?

Javascript 如何在服务器端处理的数据表上使用搜索?,javascript,jquery,ajax,datatable,jquery-datatables,Javascript,Jquery,Ajax,Datatable,Jquery Datatables,使用数据表时,服务器端处理。如何将搜索值传递到服务器?我已经查过了 数据表自动将绘图、开始和长度发送到服务器。我可以也应该用搜索做一些类似的事情吗?文档中提到了search[value],但我不知道如何解释它 客户 $(document).ready(function () { var url = '@Url.Action("GetJsonData", "Home")'; $('#example').dataTable({ 'searching': true,

使用数据表时,服务器端处理。如何将搜索值传递到服务器?我已经查过了

数据表自动将
绘图
开始
长度
发送到服务器。我可以也应该用
搜索
做一些类似的事情吗?文档中提到了
search[value]
,但我不知道如何解释它

客户

$(document).ready(function () {
    var url = '@Url.Action("GetJsonData", "Home")';

    $('#example').dataTable({
        'searching': true,
        "paging": true,

        "processing": true,
        "serverSide": true,
        "ajax": {
            "url": url,
            "type": "GET"
        },

        "columns": [
            { "data": "id" },
            { "data": "name" }
        ]
    });
});
服务器

public JsonResult GetJsonData(string draw, int start, int length, string search)
{
    var hugeDataArr = new object[100];
    var returnDataArr = new object[length];
    for (int i = 0; i < hugeDataArr.Length; i++)
    {
        hugeDataArr[i] = new
        {
            DT_RowId = i, 
            id = "id" + i.ToString().PadLeft(2, '0'), 
            name = "nameæøå" + i.ToString().PadLeft(2, '0')
        };
    }

    for (int i = 0; i < length; i++)
    {
        returnDataArr[i] = hugeDataArr[start + i];
    }

    JsonResult json = Json(new
    {
        draw = Convert.ToInt32(draw),
        recordsTotal = 100, // calculated field
        recordsFiltered = 50, // calculated field
        data = returnDataArr
    }, JsonRequestBehavior.AllowGet);
    return json;
}
publicjsonresult GetJsonData(字符串绘制、int开始、int长度、字符串搜索)
{
var hugedatar=新对象[100];
var returnDataArr=新对象[长度];
for(int i=0;i
如文档数据表中所述,传递一个带有两个值的搜索数组。 search[value]是过滤所需的搜索字符串,search[regex]只是一个布尔值,表示search[value]应该解释为regex还是string


如果您正在搜索特定列中的值,则搜索字符串将位于列[i][search][value]

中。您不应将搜索用作参数。但它会自动成为查询字符串的一部分

public JsonResult GetJsonData(string draw, int start, int length)
{
     string search = Request.QueryString["search[value]"];
     // your code for search filtering

}
谢谢
ravi

我使用它,因为它从来都不是null,而是一个空字符串

Request.Form.GetValues("search[value]")[0]
如果要获取服务器端serach box的值: string search=Request.Form.GetValues(“search[value]”)。FirstOrDefault()


这将为您提供搜索框的值。

如果
search[value]
参数始终为空,请确保您在客户端使用
POST
Ajax调用,并且控制器的操作方法标记为
[HttpPost]

客户端:

$('#example').dataTable({
    "processing": true,
    "serverSide": true,
    "ajax": {
        "url": url,
        "type": "POST"
    },
  //Other configurations
});
服务器:

[HttpPost]
public JsonResult GetJsonData(string draw, int start, int length)
{
     string search = Request.QueryString["search[value]"];
     // your code for search filtering

}

所以我的动作参数是错误的?它不应该是
string search
,而是
string[]search
?我现在尝试了string[]search,但它仍然为空。文档说:“要应用于所有可搜索为true的列。”我应该添加这个选项。你真的可以使用Url请求而不是参数来执行参数。