Cara mengirim data formulir bersama dengan data jQuery DataTables dalam mode pemrosesan sisi server

Saya mencoba memposting data formulir tanpa hasil dan data tidak dapat dimuat.

Bagaimana saya bisa meneruskan semua data formulir dengan array dan kotak teks tunggal, kotak kombo, dll. ke fnServerdata?

table_obj = $('#group-table').dataTable({
   "sAjaxSource": "URL Goes here",
   fnServerData: function(sSource, aoData, fnCallback,oSettings) {
      oSettings.jqXHR = $.ajax( {
         "dataType": 'json',
         "type": "POST",
         "url": sSource+'?'+$.param(aoData),
         "data": $("#frm").serializeArray(),
         "success": fnCallback
      } );
   },
   aaSorting: [[ 1, "desc" ]],
   bProcessing: true,
   bServerSide: true,
   processing : true,
   columnDefs: [{
        'targets': 0,
        'searchable':false,
        'orderable':false,
        'className': 'dt-body-center',
        'render': function (data, type, full, meta){
            return '<label><input type="checkbox" name="user_id[]" value="' + $('<div/>').text(data).html() + '"></label>';
        }
     }],
   rowCallback: function(row, data, dataIndex){
       // If row ID is in list of selected row IDs
       if($.inArray(data[0], rows_selected) !== -1){
          $(row).find('input[type="checkbox"]').prop('checked', true);
          $(row).addClass('selected');
       }
   },
   iDisplayLength: '50',
});

person Vijay V.    schedule 18.07.2015    source sumber
comment
apakah Anda melakukan pencarian web tentang cara mendapatkan data formulir di php dan cara mengirim permintaan sql? jika Anda mendapatkan kesalahan, Anda harus menunjukkannya.   -  person hoijui    schedule 18.07.2015
comment
Ya. Saya melakukannya dan mendapatkan respons yang tepat tetapi saya mencoba dengan ajax yang dapat didata kemudian mendapatkan masalah   -  person Vijay V.    schedule 18.07.2015
comment
jika Anda mendapatkan kesalahan, Anda harus menunjukkannya. apa yang Anda maksud dengan mendapat masalah?   -  person hoijui    schedule 18.07.2015
comment
Masalahnya adalah... saya tidak mendapatkan data formulir dengan data json tabel data? kedua data perlu digabungkan..   -  person Vijay V.    schedule 18.07.2015


Jawaban (3)


SOLUSI 1

Ganti ini:

$('#group-table').dataTable({
   "sAjaxSource": "URL Goes here",
   fnServerData: function(sSource, aoData, fnCallback,oSettings) {
      oSettings.jqXHR = $.ajax( {
         "dataType": 'json',
         "type": "POST",
         "url": sSource+'?'+$.param(aoData),
         "data": $("#frm").serializeArray(),
         "success": fnCallback
      } );
   },

dengan:

$('#group-table').dataTable({
   "ajax": {
      "url": "URL Goes here",
      "type": "POST",
      "data": function(d){
         d.form = $("#frm").serializeArray();
      }
   },

Data formulir Anda akan berada dalam parameter form sebagai array objek dengan parameter name dan value, di bawah ini adalah representasi JSON:

"form": [{"name":"param1","value":"val1"},{"name":"param2","value":"val2"}]

SOLUSI 2

Jika Anda ingin memiliki data formulir sebagai pasangan nama/nilai, lihat jsFiddle ini untuk contoh solusi alternatif .


CATATAN

Ada kotak centang di tabel data Anda. Solusi di atas tidak akan berfungsi untuk elemen formulir di tabel data, karena DataTable menghapus node yang tidak terlihat dari DOM.

person Gyrocode.com    schedule 18.07.2015
comment
apakah itu akan menggabungkan parameter tabel data? - person Vijay V.; 18.07.2015
comment
@VijayV., ya, dengan solusi #1 menggunakan opsi data Anda membuat parameter baru form yang akan berisi data formulir. Dengan solusi #2 ini digabungkan dengan data DatTables tetapi dengan cara yang berbeda. - person Gyrocode.com; 18.07.2015
comment
Tidak cocok dengan MVC. - person Triynko; 30.03.2016

Jika Anda ingin memformat data POST, Anda juga dapat memformat data formulir menggunakan fungsi jquery .each(). Izinkan saya menggunakan jawaban di atas menggunakan solusi #1 tetapi dengan jquery .each() untuk memformat data.

$('table').DataTable({
  "ajax": {
     "url": "URL HERE",
     "type": "POST",
     "data": function(d) {
       var frm_data = $('form').serializeArray();
       $.each(frm_data, function(key, val) {
         d[val.name] = val.value;
       });
     }
  }
});

Kemudian Anda bisa mengaksesnya di PHP seperti:

var $data = $_POST['name'];
person Val Cajes Luminarias    schedule 12.08.2016
comment
Terima kasih banyak. Ini bekerja dengan luar biasa dan mudah dimengerti. Ada kesalahan ketik. Baru saja mengedit jawaban Anda. - person Zohaib; 11.11.2016
comment
Luar biasa, kecuali itu tidak berfungsi ketika Anda memiliki banyak nilai untuk beberapa bidang formulir. Saya harus menggabungkan dengan ini: jsfiddle.net/XW2Cm/1 dan menyesuaikan kode Anda seperti ini: var frm_data = $('form').serializeObject(); $.extend(d, frm_data); - person Fred Mauroy; 15.09.2017

Bagaimana dengan ini?

$('#group-table').DataTable( {
          "processing": true,
          "serverSide": true,
          "bDestroy": true,
          "bJQueryUI": true,
          "ajax": {
              "url": "url here",
              "type": "POST",
              "data": {
                   store: $('#store').val(),
                   month: $('#m').val(),
                   year: $('#y').val(),
                   status: $('#status').val(),
                },
          }
    } );

lalu Anda dapat mengakses contoh data di atas melalui PHP menggunakan ini.

$_POST['store']
$_POST['month']
$_POST['year']
$_POST['status]

Semoga itu bisa membantu.

person curiosity    schedule 05.09.2019