title: Datatable : Serverside global search does not send value in "search[value][0]"
body: <p>I have Datatable with server-side (MVC.net) paging, sorting, column filter and global search as follows </p>
  
  <p>Html code</p>
  
  <pre><code>    &lt;table id="Grid" class="dataTable table table-striped table-bordered " style="width: 100% !important"&gt;
          &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Name&lt;/th&gt;
              &lt;th&gt;Name2&lt;/th&gt;
              &lt;th&gt;name3&lt;/th&gt;
              &lt;th&gt;name4&lt;/th&gt;
              &lt;th&gt;name5&lt;/th&gt;
              &lt;th&gt;&lt;/th&gt;
              &lt;th&gt;&lt;/th&gt;
              &lt;th&gt;&lt;/th&gt;
              &lt;th&gt;&lt;/th&gt;
              &lt;th&gt;last name&lt;/th&gt;
  
          &lt;/tr&gt;
          &lt;/thead&gt;
          &lt;tbody&gt;
          &lt;/tbody&gt;
          &lt;tfoot&gt;
          &lt;tr&gt;
                  &lt;th&gt; &lt;input class="form-control texts" type="text" placeholder="Filter Name" id="filter0" maxlength="180" /&gt;&lt;/th&gt;
                  &lt;th&gt; &lt;input class="form-control texts" type="text" placeholder="Filter Host" id="filter1" maxlength="180" /&gt;&lt;/th&gt;
                  &lt;th&gt; &lt;select class="form-control selects" id="filter2"&gt;
                      &lt;option value="select"&gt;Select&lt;/option&gt;
                      &lt;option value="1"&gt;2&lt;/option&gt; 
                      &lt;option value="2"&gt;2&lt;/option&gt;
                  &lt;/select&gt; &lt;/th&gt;
                  &lt;th&gt;
                      &lt;select class="form-control selects" id="filter3"&gt;
                          &lt;option value="select"&gt;Select&lt;/option&gt;
                          &lt;option value="1"&gt;true&lt;/option&gt;
                          &lt;option value="2"&gt;false/option&gt;
                      &lt;/select&gt;
                  &lt;/th&gt;
                  &lt;th&gt;&lt;select class="form-control selects" id="filter4"&gt;
                      &lt;option value="select"&gt;Select&lt;/option&gt; 
                      &lt;option value="True"&gt;True&lt;/option&gt;
                      &lt;option value="false"&gt;False&lt;/option&gt;
                      &lt;/select&gt; 
                  &lt;/th&gt;
                  &lt;th&gt;
                      &lt;select class="form-control selects" id="filter5"&gt;
                          &lt;option value="select"&gt;Select&lt;/option&gt;
                          &lt;option value="True"&gt;True&lt;/option&gt;
                          &lt;option value="false"&gt;False&lt;/option&gt;
                      &lt;/select&gt;
                  &lt;/th&gt;
                  &lt;th&gt;&lt;/th&gt;
                  &lt;th&gt;&lt;/th&gt;
                  &lt;th&gt;
                      &lt;div class='input-group date col-xs-9' id="datepicker2"&gt;
                          &lt;input class="form-control datepicker texts" type="text" placeholder="Filter Key expiration date" id="filter8" maxlength="10" /&gt;
                          &lt;span class="input-group-addon"&gt;
                              &lt;span class="ebsi-icon-calendar"&gt;&lt;/span&gt;
                          &lt;/span&gt;
                      &lt;/div&gt;
  
                  &lt;/th&gt;
                  &lt;th&gt;
                      &lt;div class="btn-group btn-group-xs pull-right"&gt;
                           &lt;input id="btnColumnFilters" class="datatable-action btn btn-sm btn-primary btn-secondary" type="button" value="Filter"/&gt;
                          &lt;input id="btnClearColumnFilters" class="datatable-action btn-sm btn btn-grey btn-secondary" type="button" value="Clear"/&gt;
                      &lt;/div&gt; 
                  &lt;/th&gt;
              &lt;/tr&gt;
          &lt;tfoot&gt;
      &lt;/table&gt;
  </code></pre>
  
  <p>javascript code :</p>
  
  <pre><code>var ConfigTable = $('#Grid')
                  .on('preXhr.dt', function(e, settings, data) {
                      $(".alert").hide(); // hide any alerts
                  })
                  .DataTable({
                      autoWidth: true,
                      lengthChange: false,
                      responsive: true,
                      searching: true,
                      ordering: true,
                      paging: true,
                      pageLength: 10,                      
                      serverSide: true,
                      order: [[0, "asc"]],
                      ajax: {
                          url: "/controller/action",
                          type: "POST",
                          datatype: "json",
                          error: function (xhr, error, thrown) {
  
                          },
                          data: function(d) {
                              return $.extend({},
                                  d,
                                  {
                                  });
                          }
                      },
                      columns: [
                          { "data": "Name", "name": "Name", "autoWidth": true, "searchable": true },
                          { "data": "Name2", "title": "Name2", "name": "Name2", "autoWidth": true, "searchable": true }.....
                      ]
                  });
  </code></pre>
  
  <p>Column filter on button click</p>
  
  <pre><code> //send column filter data on button click
          $("#btnColumnFilters").click(function() {
              filterColumns.map(function (key, value) {
                  ConfigTable = ConfigTable.column(key).search($("#filter" + key).val());
              });
              ConfigTable.draw();
          });
  </code></pre>
  
  <p>//server side search only when user hits enter or previous input has been cleared</p>
  
  <pre><code>$('#Grid_filter input').unbind();
  $('#Grid_filter input').bind('keyup', function(e) {
      if (e.keyCode == 13 || $(this).val() == "") {
          // clear all filter selection 
          resetColumnFilters();
          //apply filters
          ConfigTable.columns().search(this.value).draw();
      }
  });
  </code></pre>
  
  <p>server-side code </p>
  
  <pre><code>    [HttpPost]
              public JsonResult action(jQueryDataTableParamModel param)
              {
  //globla filter                  
   var search = Request.Form.GetValues("search[value]")[0];
                    // column filter  
   var Name = Request.Form.GetValues("columns[0][search][value]")[0];        
  
              }
  </code></pre>
  
  <p>but I am not getting global search value in "Request.Form.GetValues("search[value]")[0]" on the server side. it always comes as an empty string. what might be the issue, please help.</p>
  
  <p>I am using 1.10.2 version of datatable plugin.</p>
  
  <p><strong>Update 1:</strong> </p>
  
  <p>Checked in network tab of firebug for ajax request, empty string is being sent for each request for search parameter, even if search value is there</p>
  
  <p>search[value] : ""</p>
  
  <p><strong>Update 2:</strong> 
  If I remove code to send global filter value only when enter is hit, it sends the search value to server</p>
  
  <p><strong>Update 3:</strong>
  alert on this.value gives a value but
  ConfigTable.columns().search(this.value).draw(); does not send value to server</p>