javascript - डेटाटेबल: कस्टम AJAX फ़ंक्शन का उपयोग करते समय त्रुटि को कैसे निकालना है?



jquery datatables (1)

कुछ अलग-अलग तरीकों की कोशिश करने के बाद, मुझे लगता है कि सफलता के लिए आपके डेटा के साथ callback फ़ंक्शन को कॉल करने के लिए और विफलता पर खाली आंकड़ों के साथ callback कॉल करना होगा। यदि कोई त्रुटि है, तो आप .dataTables_empty पंक्ति का पाठ अपने त्रुटि संदेश के टेक्स्ट पर सेट कर सकते हैं, इसलिए यह तालिका में प्रदर्शित होगा। यह कैसे काम करेगा, और यह कोड कैसा दिखेगा:

महत्वपूर्ण नोट - कॉलबैक कॉल करने के बाद .dataTables_empty पाठ सेट करना सुनिश्चित करें, क्योंकि कॉलबैक इसे वापस सेट करेगा (जो वास्तव में अच्छा है क्योंकि तब आपको प्रत्येक डेटा लोड पर खुद को रीसेट करने की आवश्यकता नहीं है)

$('#example').dataTable( {
  "columns": [
    {"data": "col1"},
    {"data": "col2"},
    {"data": "col3"},
  ],
  "ajax": function (data, callback, settings) {
    // simulate ajax call with successful data retrieval
    var myAjaxCall = new Promise(function (resolve, reject) {
      $(".dataTables_empty").text("Loading...");
      setTimeout(function () {
        // `callback()` expects an object with a data property whose value is either 
        // an array of arrays or an array of objects. Must be in this format
        // or you get errors.
        var ajaxData = {"data": [
          {"col1": "1.1", "col2": "1.2", "col3": "1.3"},
          {"col1": "2.1", "col2": "2.2", "col3": "2.3"},
          {"col1": "3.1", "col2": "3.2", "col3": "3.3"}
        ]};
        resolve(ajaxData);
      }, 1500);
    });
    
    myAjaxCall.then(function resolveCallback(data) {
      // render data returned from ajax call
      callback(data);
    }, function rejectCallback(err) {
      callback({data: []});
      $(".dataTables_empty").text(err); 
    });
  }
});

$('#example2').dataTable( {
  "columns": [
    {"data": "col1"},
    {"data": "col2"},
    {"data": "col3"},
  ],
  "ajax": function (data, callback, settings) {
    // simulate unsuccessful ajax call
    var myAjaxCall2 = new Promise(function (resolve, reject) {
      $(".dataTables_empty").text("Loading...");
      setTimeout(function () {
        // reject promise with error message
        reject("Something went terribly wrong!");
      }, 1500);
    });
    
    myAjaxCall2.then(function resolveCallback(data) {
      callback(data);
    }, function rejectCallback(err) {
      // render table with no results
      callback({data: []});
      // set dataTables empty message text to error message
      $(".dataTables_empty").text(err); 
    });
  }
});
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
<link rel="stylesheet" href="https://cdn.datatables.net/1.10.15/css/jquery.dataTables.min.css" />
<script src="https://cdn.datatables.net/1.10.15/js/jquery.dataTables.min.js"></script>
<h1>Success</h1>
<table id="example">
  <thead>
    <tr>
      <th>Col 1</th>
      <th>Col 2</th>
      <th>Col 3</th>
    </tr>
  </thead>
  <tbody>
  </tbody>
</table>
<h1>Error</h1>
<table id="example2">
  <thead>
    <tr>
      <th>Col 1</th>
      <th>Col 2</th>
      <th>Col 3</th>
    </tr>
  </thead>
  <tbody>
  </tbody>
</table>

डेटाटेबल का उपयोग करते समय मुझे एक कस्टम एजेक्स फ़ंक्शन का उपयोग करने की आवश्यकता है I

यहां पाया गया विहित उदाहरण निम्नानुसार है:

$('#example').dataTable( {
  "ajax": function (data, callback, settings) {
    //some async processing happening here
    //In the end call the callback. 
    //However, this callback only accepts a success state
    // instead of the usual cb(err, resp) signature. 
    //This raises the question how to let Datatables know there's an error.
    const err = new Error("some contrived error");


    //This doesn't work, datatables doesn't signal an actual error
    //which can be surfaced to the client. Instead it complains
    //the response doesn't have a 'data'-object which it needs
    //to correctly create the table. In other words, datatables
    //thinks that the passed err-object is an actual correct response. 

    //Question: so how to actually let datatables know there's an actual error?
    callback(err);
  }
} );

हालांकि, मुझे डैटैटबल को पता करने का कोई तरीका नहीं है कि एक एजेक्स-त्रुटि हुई।

यह कैसे करना है?






datatables