2014-06-30 6 views
9

मैं एक datatable मैं इस तरह से प्रारंभ हो गया है कि:datatables की पुनः लोड करने पर पैरामीटर भेजने के लिए कैसे

mytable = DataTable({ 
     ajax:{ 
      url: "/url/getTableData", 
      dataSrc: "" 

     }, 
     sortClasses: false, 
     paging: false, 
     scrollY: 300, 
     columns: cols 
    }); 

बाद में मैं

mytable.ajax.reload(); 

यह ठीक काम करता है क्या करना चाहते हैं, लेकिन अब मैं डी उस अनुरोध में कुछ पैरामीटर भेजना पसंद है। उन पैरामीटर जिन्हें मुझे केवल पुनः लोड करने की आवश्यकता है, न कि तालिका के प्रारंभ में। मैं यह कैसे कर सकता हूं? धन्यवाद!

+0

क्या आपने दस्तावेज़ को पढ़ा था? ऐसा लगता है कि आप पुनः लोड करने से पहले इन अधिकारों में से किसी एक का उपयोग कर सकते हैं: http://datatables.net/reference/api/ajax.url() और http://datatables.net/reference/option/ajax.data – Ian

+0

मैंने किया प्रलेखन पढ़ें, लेकिन मैं जवाब खोजने में सक्षम नहीं था। मैं यूआरएल, केवल पैराम्स को बदलना नहीं चाहता था। और मुझे यकीन नहीं है कि आपके जैसे यूआरएल का उपयोग करने से मुझे उस अर्थ में मदद मिलती है, हालांकि यह वास्तव में एक समाधान है। – BMF

+1

"कुछ पैरामीटर" द्वारा आपके द्वारा किए गए कार्यों के आधार पर, यूआरएल बदलना एक विकल्प था (एक क्वेरीस्ट्रिंग जोड़ना)। लेकिन अगर आप POST अनुरोध के शरीर में डेटा पास करना चाहते हैं, तो मेरा दूसरा लिंक (http://datatables.net/reference/option/ajax.data) का उपयोग करें - मुझे पूरा यकीन है कि यह एक बेहतर उदाहरण है उत्तर आप स्वीकार करते हैं, और ऐसा लगता है कि आप जो करने की कोशिश कर रहे हैं, उसके लिए एक हैकी समाधान नहीं – Ian

उत्तर

22

विकल्प 1 - preXhr.dt घटना का उपयोग करें।

table = $('#example') 
    .on('preXhr.dt', function (e, settings, data) { 
     data.whateveryouwant = $("#someidhere").val() 
     data.anotherexample = "kittens" 
    }) 
// then just setup your datatable as normal 
    .DataTable({ 
     ajax:{ 
      url: "/url/getTableData", 
      type: "GET" // This is the default value, could also be POST 
     }, 
     sortClasses: false, 
     paging: false, 
     scrollY: 300, 
     columns: cols 
}); 

यहाँ http://datatables.net/reference/event/

विकल्प 2 (पसंदीदा) देखते हैं - एक ajax.data समारोह का उपयोग करें।

table = $('#example').DataTable({ 
    ajax:{ 
     url: "/url/getTableData", // Change this URL to where your json data comes from 
     type: "GET", // This is the default value, could also be POST, or anything you want. 
     data: function(d) { 
      d.whateveryouwant = $("#someidhere").val() 
      d.anotherexample = "kittens" 
     } 

    }, 
    sortClasses: false, 
    paging: false, 
    scrollY: 300, 
    columns: cols 
}); 

दोनों विकल्प समान परिणाम उत्पन्न करते हैं। आपका सर्वर अंतर नहीं जान पाएगा। अतिरिक्त डेटा प्रत्येक table.ajax.reload() पर जोड़ा जाएगा। अतिरिक्त डेटा हो जाएगा:

#someidhere तत्व के मूल्य के साथ की whateveryouwant, और

मूल्य के साथ anotherexample"kittens"

मैं विकल्प 2 पसंद करते हैं, क्योंकि यह अधिक स्पष्ट है कि अतिरिक्त डेटा किया जा रहा है प्रत्येक अनुरोध पर जोड़ा गया। पहला विकल्प थोड़ा सा स्नीकी है और यह आपके कोड को पढ़ने वाले किसी और के लिए स्पष्ट नहीं है।

संबंधित मुद्दे