10
votes

Traitement côté serveur JQuery Datatables et asp.net

J'essaie d'utiliser la fonctionnalité latérale du serveur du plugin JQuery DataTables avec ASP.NET. La demande Ajax renvoie JSON valide, mais rien ne se présente dans la table.

J'ai initialement eu des problèmes avec les données que j'envoie dans la demande Ajax. Je recevais une erreur "Primative JSON invalide". J'ai découvert que les données doivent être dans une chaîne au lieu de JSON Serialized, comme décrit dans ce post: http://encia.com/2008/06/05/3-mistake-a-avoid-quive-utilisation-jquery-vith-aspnet- Ajax / . Je n'étais pas tout à fait sûr comment résoudre ce problème, alors j'ai essayé d'ajouter cela dans la requête Ajax: xxx

si les AFOVES fonctionnent finalement, je vais ajouter les autres paramètres plus tard. En ce moment, j'essaie juste d'obtenir quelque chose à se présenter dans ma table.

Le retour JSON est ok et valide, mais le SECHO de la poste est indéfini et je pense que c'est pourquoi aucune donnée n'est Chargé dans la table.

Alors, qu'est-ce que je fais mal? Suis-je même sur la bonne voie ou suis-je stupide? Est-ce que quelqu'un a couru dans ceci avant ou avoir des suggestions?

Voici mon jQuery: xxx

html: xxx

webmethod: xxx

json retourné: xxx


0 commentaires

4 Réponses :


4
votes

J'ai changé les données vers xxx

et cela a fonctionné. Alors maintenant, la question est de savoir comment transmettre le reste des données sur le site Web. J'ai essayé d'utiliser JSON2 pour transformer le JSON en une chaîne, mais cela a ouvert une autre boîte de vers, et est un problème distinct.


0 commentaires

2
votes

Je travaille sur la même chose et un de mes amis m'a aidé avec cette partie. Ce code est en C # mais vous devriez être capable de le porter sur.

JQUERY CODE: P>

// to serialize JSON in ASP.NET, it requires a class template.
    [Serializable]
    public class Data
    {
        // Yay for 3.5 auto properties
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Sign { get; set; }
    };

    [WebMethod]
    public static List<Data> ServerSideTest()
    {
        List<Data> DataList = new List<Data>();

        Data thisData = new Data();
        thisData.FirstName = "Sol";
        thisData.LastName = "Hawk";
        thisData.Sign = "Aries";

        DataList.Add(thisData);

        Data thisData2 = new Data();
        thisData2.FirstName = "Mako";
        thisData2.LastName = "Shark";
        thisData2.Sign = "Libra";

        DataList.Add(thisData2);

        return DataList;
    }


0 commentaires

2
votes

Vous voudrez peut-être jeter un coup d'œil à la solution de Zowen ici http://weblogs.asp.net/zowens/archive/2010/01/19/JQUERY-Datatables-plugin-meets-c.aspx . Il a fait un analyseur de données qui fonctionne assez bien.

J'espère que cela aide.


1 commentaires

+1 pour partager le lien pertinent pour la question. J'ai trouvé le lien pour être très utile pour mon cas. Merci.



3
votes

Il y a au moins deux problèmes dans votre code JavaScript:

  1. "DATA": "{'SECHO': '" + AODATA [0] .VALUE + "'}", LI> ol>

    ceci a déjà été signalé par Tchad. C'est la bonne façon d'obtenir le Secho: P>

    1. "succès": fonction (msg) {fncallback (msg.d); } li> OL>

      Si vous utilisez une version récente de .NET (je pense 3.5 et up), vous devez ajuster la fonction de réussite à revenir correctement. Lire Ce pour comprendre pourquoi vous devez passer "msg.d". p>

      Voici votre code JS mise à jour: p> xxx pré>

      puis pour obtenir ce travail sur le côté serveur, Je ne sais pas ce que vous devrez changer dans votre code (car je ne suis pas un gars VB), mais je sais que ce qui suit fonctionne pour moi (à l'aide d'un service WebService ASMX): P>

      using System;
      using System.Web;
      using System.Web.Services;
      using System.Web.Services.Protocols;
      using System.Collections.Generic;
      
      [WebService(Namespace = "http://tempuri.org/")]
      [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
      [System.Web.Script.Services.ScriptService]
      public class GridTest : System.Web.Services.WebService
      {
      
          [WebMethod]
          public FormatedList ServerSideTest(string sEcho)
          {
              var list = new FormatedList();
      
              list.sEcho = sEcho;
              list.iTotalRecords = 1;
              list.iTotalDisplayRecords = 1;
      
              var item = new List<string>();
              item.Add("Gecko");
              item.Add("Firefox 1.0");
              item.Add("Win 98+ / OSX.2+");
              item.Add("1.7");
              item.Add("A");
              list.aaData = new List<List<string>>();
              list.aaData.Add(item);
      
              return list;
          }
      
      }
      
      public class FormatedList
      {
          public FormatedList()
          {
          }
          public string sEcho { get; set; }
          public int iTotalRecords { get; set; }
          public int iTotalDisplayRecords { get; set; }
          public List<List<string>> aaData { get; set; }
      }
      


0 commentaires