2016-09-05 1 views
0

Ce sont mes erreurs dans le navigateur:tête Datatable D'accord, mais le corps de connexion Datatable à Api - pas de données de retour

Impossible de charger la ressource: le serveur a répondu avec un statut de 404 (non trouvé)

jquery .datatables.js: 3406 Uncaught TypeError: Impossible de lire la propriété 'longueur' undefined

enter image description here

Voici la réponse JSON directe:

enter image description here

est ici la source de la page:

@model IEnumerable<SE01.Models.BMFixture> 
 

 
@{ 
 
    ViewBag.Title = "Fixtures"; 
 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
 
} 
 
<h2>Fixtures</h2> 
 

 
<table id="bmfixtures" class="table table-bordered table-hover"> 
 
    <thead> 
 
     <tr> 
 

 
      <th>Market</th> 
 
      <th>Market</th> 
 
      <th>Selection</th> 
 
      <th>Bookmaker</th> 
 
      <th>Odds</th> 
 
      <th>Delete</th> 
 

 
     </tr> 
 
    </thead> 
 
    <tbody> 
 
      
 
    </tbody> 
 
</table> 
 

 

 
@section scripts 
 
{ 
 
    <script> 
 
     $(document).ready(function() { 
 
      $("#bmfixtures").DataTable({ 
 
       ajax: { 
 
        url: "/Api/BMFixtures", 
 
        datasrc: "" 
 
       }, 
 
       columns: [ 
 
        { 
 
         data: "marketname", 
 
         render: function(data, type, bmfixture) { 
 
          return "<a href='/bmfixtures/edit/" + bmfixture.Id + "'>" + bmfixture.marketname + "</a>"; 
 
         } 
 
        }, 
 
        { 
 
         data: "marketname" 
 
        }, 
 
        { 
 
         data: "selectionname" 
 
        }, 
 
        { 
 
         data: "bookmakername" 
 
        }, 
 
        { 
 
         data: "bookmakerodds" 
 
        }, 
 
        { 
 
         data: "id", 
 
         render: function(data) { 
 
          return "<button class='btn-link js-delete' data-bmfixture-id=" + data + ">Delete</button>"; 
 
         } 
 
        } 
 

 
       ] 
 
      }); 
 

 
      $("#bmfixtures").on("click", " .js-delete", function() { 
 
       var button = $(this); 
 

 
       if (confirm("Are you sure you want to delete this fixture?")) { 
 
        $.ajax({ 
 
         url: "/api/bmfixtures/" + button.attr("data-bmfixture-id"), 
 
         method: "DELETE", 
 
         success: function() { 
 
          button.parents("tr").remove(); 
 
         } 
 
        }); 
 
       } 
 
      }); 
 
     }); 
 
    </script> 
 
}

Répondre

1

Salut j'ai essayé une démo simple et il semble fonctionner très bien, mais je ne suis pas vous en utilisant les données, donc peut-être un problème avec le format JSON. Seules les choses que j'ai différemment doivent utiliser des guillemets simples et qualifier complètement l'URL - essayez donc (par exemple url: "http://localhost:60241/api/bmfixtures")

Exemple (ont changé les données dans les liens, etc. vous obtenez tellement idée):

@{ 
    ViewBag.Title = "Fixtures"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 
<h2>Fixtures</h2> 

<table id="bmfixtures" class="table table-bordered table-hover"> 
    <thead> 
     <tr> 
      <th></th> 
      <th>id</th> 
      <th>type</th> 
      <th>text</th> 
      <th></th> 
     </tr> 
    </thead> 
    <tbody></tbody> 
</table> 

@section scripts 
{ 
    <script> 

     $("#bmfixtures").DataTable({ 
      ajax: { 
       // Replace below line with: url: "http://localhost:60241/api/bmfixtures", (in your version) 
       url: "http://api.scb.se/OV0104/v1/doris/en/ssd", 
       dataSrc: '' 
      }, 
      columns: [ 
       { 
        data: 'id', 
        render: function (data, type, bmfixture) { 
         return "<a href='/bmfixtures/edit/" + bmfixture.id + "'>" + bmfixture.id + "</a>"; 
        } 
       }, 
       { data: 'id' }, 
       { data: 'type' }, 
       { data: 'text' }, 
       { 
        data: 'id', 
        render: function (data) { 
         return "<button class='btn-link js-delete' data-bmfixture-id=" + data + ">Delete</button>"; 
        } 
       } 
      ] 
     }); 
    </script> 
} 
+0

Merci Vraiment bien @James J'ai travaillé toute la nuit et complètement reconstruit le système à partir de zéro pour un démarrage propre (il y avait un autre problème de données aussi) et faible et voici le problème persiste ... JUSQU'à ce que j'ai commencé à jouer autour avec les colonnes commençant avec juste une colonne et la construisant progressivement. Faible et voici, cela fonctionne quand je supprime le href - comme vous l'avez indiqué. Chose amusante je l'ai essayé avec des guillemets simples quand vous avez dit mais cela n'a pas fonctionné. Au moins, je sais que cela fonctionne et c'est là que réside le problème - je vais expérimenter plus loin. Vous êtes une star! – user6063812

+0

Cela montre le nœud du problème James - Je ne sais pas comment intégrer la variable dans l'édition href - voir - http://stackoverflow.com/questions/39374866/dynamic-link-in-datatables-column- return-undefined – user6063812

+0

Merci James - pour votre réponse - Il devrait être id (minuscule) pas Id. – user6063812