2017-02-15 3 views
0

J'ai essayé de publier des données dans des tables de données jquery, mais je n'ai pas pu. J'ai une méthode web côté serveur qui renvoie des données en tant que tableau d'objets. J'ai besoin d'obtenir des données avec ajax post. Mais je ne peux pas. J'ai donc besoin d'aide.Tables de données Jquery Impossible de publier des données avec Ajax (asp.Net)

Voici mon C# méthode web:

[WebMethod] 
    public static object[] Questions() 
    { 
     table = new DataTable(); 
     List<object> questionList = new List<object>(); 
     table = RunSelectCommand("SELECT QUESTION_ID,QUESTION_TEXT,QUESTION_GROUP FROM QUESTIONS WHERE QUESTION_ACTIVE='Y'"); 
     for(int i=0 ; i<table.Rows.Count ; i++) 
     { 
      questionList.Add(new 
      { 
       q_id = table.Rows[i]["QUESTION_ID"].ToString(), 
       q_text = table.Rows[i]["QUESTION_TEXT"].ToString(), 
       q_group = table.Rows[i]["QUESTION_GROUP"].ToString() 
      }); 
     } 

     return questionList.ToArray(); 
    } 

Et jquery:

$(document).ready(function() { 
     $('#questTable').DataTable({ 
      processing: true, 
      serverSide:true, 
      ajax: { 
       url: 'Question.aspx/Questions', 
       type:'POST' 
      }, 
      columns: [ 
       { data: 'q_id' }, 
       { data: 'q_text' }, 
       { data: 'q_group' } 
      ] 
     }); 
    }); 

Mais i il debuged avec point de rupture et j'ai remarqué que méthode Web ne fonctionne pas. Et voici l'erreur que j'obtiens: Avertissement DataTables: ID de table = questTable - Réponse JSON non valide. Pour plus d'informations sur cette erreur, s'il vous plaît voir http://datatables.net/tn/1

Merci d'avance.

+0

Consultez la [documentation côté serveur] (https://datatables.net/manual/server-side), en particulier la section 'Données retournées'. – markpsmith

+0

J'ai résolu le problème, merci :) –

Répondre

0

Problème résolu. Il s'agissait de ma méthode web retourne un tableau d'objets et les tables de données ne l'acceptent pas. C'est pourquoi j'ai eu Réponse JSON invalide. erreur. Donc, je change ma structure js. Je poste des données comme d'habitude puis j'utilise les tables de données données propriété pour la poste. Cela fonctionne:

function GetData() 
    { 
     $.ajax({ 
      type: 'POST', 
      dataType: 'json', 
      contentType: 'application/json', 
      url: 'Question.aspx/Questions', 
      data: '{}', 
      success: function (result) { 
       $('#questTable').DataTable({ 
        data:result.d, 
        columns: [ 
         { data: 'q_id' }, 
         { data: 'q_text' }, 
         { data: 'q_group' } 
        ] 
       });} 
    }