2015-03-04 10 views
5

Proszę spojrzeć na mój problem poniżej:jquery DataTables Ajax Błąd/http://datatables.net/tn/7

używam w moim MVC-Web-Applikation na DataTables jQuery. Kiedy wyświetlam tylko 8 kolumn, wszystko działa poprawnie. Ale z 1 kolumną więcej, otrzymuję komunikat o błędzie ajax, patrz tytuł.

Kontroler działa dobrze, ponieważ 8 kolumn działa dobrze. Oto mój kod widzenia:

<script type="text/javascript"> 
    $(document).ready(function() { 
     var table = $('#example').DataTable({ 
      "processing": true, 
      "serverSide": true, 
      "ajax": "@Url.Action("List", "DFS_Akustik")", 
      "columns": [ 
       { "data": "ID" }, 
       { "data": "MessID" }, 
       { "data": "KL_ID" }, 
       { "data": "MP_ID" }, 
       { "data": "LwLin50ss" }, 
       { "data": "LwLin63ss" }, 
       { "data": "LwLin80ss" }, 
       { "data": "LwLin100ss" }, 
       //{ "data": "LwLin125ss" }, 
      ], 
     }); 
    }); 
</script> 

Można the, że ostatnie kolumny nie jest aktywny, wówczas:

http://ziehl-abegg.com/files/work.jpg

Kiedy delte się // ostatniej kolumny, a następnie:

http://ziehl-abegg.com/files/work_not.jpg

Jak mogę rozwiązać ten problem ?? Proszę mi pomóc ... Szukam rozwiązania, od poniedziałku, przez cały dzień !!

Dziękuję.

Greetz Vegeta_77

+0

Jaki błąd powrócił serwer? Komunikat o błędzie na twoim drugim obrazku [dosłownie mówi ci, jak się dowiedzieć, co jest nie tak.] (Http: // datatables.net/manual/tech-notes/7) –

+0

Możesz także dowiedzieć się, co to jest "ajax": "@ Url.Action (" List "," DFS_Akustik ")" 'jest renderowane jak w przeglądarce? –

+0

pokaż kod HTML. –

Odpowiedz

5

Mam to, moi przyjaciele !!!!!!!!!!!!!!!!!!!!!!! bardzo miły :-)

Oto rozwiązanie:

$(document).ready(function() { 
    $('#example').dataTable({ 
     "processing": true, 
     "serverSide": true, 
     "ajax": { 
      "url": "scripts/post.php", 
      "type": "POST" 
     }, 
     "columns": [ 
      { "data": "first_name" }, 
      { "data": "last_name" }, 
      { "data": "position" }, 
      { "data": "office" }, 
      { "data": "start_date" }, 
      { "data": "salary" } 
     ] 
    }); 
}); 

miałem tylko do edycji "Ajax". Kiedy używasz "typu" "POST", to działa.

Dziękuję bardzo.

Greetz Vegeta_77

+0

Miał dokładnie ten sam problem. Masz pomysł, dlaczego to rozwiązuje problem? – DaveF

+1

Trafiliśmy również na ten problem. O ile wiem, jest tak, ponieważ wygenerowane wywołanie zwrotne przekracza limit 2048 znaków dla żądań GET. To nie jest twardy limit na standard, ale wiele serwerów internetowych wymusza to. – vaFyreHeart

+0

Perfect .. :) zaoszczędziłeś dużo czasu. Zawsze uwielbiam to uczucie, nawet jeśli rozwiązuję mały problem. –

0

Dzień dobry. Oto nagłówek HTML/tabela: wynik boczny

<div style="width: auto; height: 750px; overflow-x: auto; overflow-y: auto;"> 
     <table id="example" class="table display" cellspacing="0"> 
      <thead> 
       <tr> 
        <th>ID</th> 
        <th>MessID</th> 
        <th>KL_ID</th> 
        <th>MP_ID</th> 
        <th>LwLin50ss</th> 
        <th>LwLin63ss</th> 
        <th>LwLin80ss</th> 
        <th>LwLin100ss</th> 
        @*<th>LwLin125ss</th>*@ 
       </tr> 
      </thead> 
     </table> 
    </div> 

Serwer jest dobry, wygląd:

http://ziehl-abegg.com/files/ServerSide.jpg

@Sippy. Nie rozumiem naszego drugiego pytania.

Nazwy są poprawne, spójrz na trzeci obraz/link. Oto Methode "List" ze sterownika:

publicznej liście JsonResult ([ModelBinder (typeof (DataTablesBinder))] IDataTablesRequest requestModel) { Lista myOriginalDataSet = dbman.View_DFS_Akustik.ToList(); Lista myFilteredData = dbman.Set(). FullTextSearch (requestModel.Search.Value) .ToList();

//Apply filter to your dataset based only on the columns that actually have a search value. 
foreach (var column in requestModel.Columns.GetFilteredColumns()) 
{ 
    string query = column.Data + ".Contains(\"" + column.Search.Value + "\")"; 
    myFilteredData = myFilteredData.Where(query).ToList(); 
} 

//Set your dataset on the same order as requested from client-side either directly on your SQL code or easily 
//into any type or enumeration. 
bool isSorted = false; 
foreach (var column in requestModel.Columns.GetSortedColumns()) 
{ 
    if (!isSorted) 
    { 
     // Apply first sort. 
     if (column.SortDirection == Column.OrderDirection.Ascendant) 
      myFilteredData = myFilteredData.OrderBy(column.Data).ToList(); 
     else 
      myFilteredData = myFilteredData.OrderBy(column.Data + " descending").ToList(); 

     isSorted = true; 
    } 
    else 
    { 
     if (column.SortDirection == Column.OrderDirection.Ascendant) 
      myFilteredData = myFilteredData.OrderBy(column.Data).ToList(); 
     else 
      myFilteredData = myFilteredData.OrderBy(column.Data + " descending").ToList(); 
    } 
} 

var paged = myFilteredData.Skip(requestModel.Start).Take(requestModel.Length); 
return Json(new DataTablesResponse(requestModel.Draw, paged, myFilteredData.Count(), myOriginalDataSet.Count()), JsonRequestBehavior.AllowGet); 

}

THX. Vegeta_77

Powiązane problemy