2017-06-29 136 views
0

我需要使用「數據」填充我的數據表列,但它是(自然)未定義在AJAX get以外。我怎麼解決這個問題?從AJAX請求返回數據

$(document).ready(function() { 

     $('#search').keyup(function(){ 
      q = $(this).val(); 
      $.get("allUsers/?search=" + q , function (data) { 

      }); 
     }); 

     $('#example').DataTable({ 
      data: data, 
      columns: [ 
       { data: 'name.first'}, 
       { data: 'name.last' }, 
       { data: 'email' } 

      ] 
     });  

    }); 
+0

參考這樣的:'https://stackoverflow.com/questions/44804048/how-do-you-dynamically-set-ajax-data-in-datatables/44804154 #44804154# –

+0

將調用移動到$ .get的回調中的DataTable。 Ajax請求是異步的,所以「數據」在$ .get完成之前不會存在,此時回調將運行。在此之前,您目前對DataTable的調用將會很久以前運行。無論如何,「數據」也會超出範圍。 – ADyson

+0

https://datatables.net/manual/ajax#Loading-data – lumio

回答

0

在回調中創建數據表以使用響應。

這裏是更新的代碼。

$(document).ready(function() { 
    $('#search').keyup(function(){ 
     q = $(this).val(); 
     $.get("allUsers/?search=" + q , function (data) { 

      $('#example').DataTable({ 
       data: data, 
       columns: [ 
        { data: 'name.first'}, 
        { data: 'name.last' }, 
        { data: 'email' } 
       ] 
      }); 
     }); 
    });  

}); 

如果出於任何原因,你限制了創建回調的數據表,您可以定義創建數據表的功能和調用它在必要時。

以下是您可以選擇的方法。

$(document).ready(function() { 

    function createDataTable(data) { 
     $('#example').DataTable({ 
      data: data, 
      columns: [{ 
        data: 'name.first' 
       }, 
       { 
        data: 'name.last' 
       }, 
       { 
        data: 'email' 
       } 
      ] 
     }); 
    } 


    $('#search').keyup(function() { 
     q = $(this).val(); 

     $.get("allUsers/?search=" + q, function(data) { 
      createDataTable(data); 
     }); 
    }); 

}); 

編輯:更新與評論的建議。

+0

不能解決'$('#example')。DataTable({ 'response'實際上包含任何內容,因爲$ .get是異步的。 – ADyson

+0

不知道DataTable是否會更新表上的變化。你試過嗎? – lumio

+0

@lumio是的.Datatable不會更新表上的變化。用另一種方法來回答,每當數據發生變化時,函數'createDataTable'需要調用相應的數據。 –

-2

你可以這樣做。通過參數AJAX功能,並使用直接

function populate(data){ 
    $.ajax({ 
      type:"GET", 
      url:"Task-detail-table.jsp", 
      async: false, 
      data:{value:data }, 
      dataType:"html", 
      success:function(data) { 

       $("#Table").html(data); 

      }, 
      error:function() { 
       alert("Error"); 
      } 
     }) 

    } 
+0

他沒有加載HTML – lumio

+0

這是完全不相關的隨機通用代碼,它不會嘗試解決問題中的具體問題 – ADyson