CuriousToLearn Ответов: 1

Библиотека jQuery объекты DataTable - не могу привязать данные - ASP.NET в MVC, jQuery и


Всем привет,

Мое заявление (ASP.NET MCV) рефренирует веб-сервис для получения данных и отображения с помощью DataTables jQuery (https://datatables.net/).

Что я уже пробовал:

Создана функция ajax для вызова контроллера / действия.
<script src="~/Scripts/jquery.js"></script>  
<script src="~/Scripts/DataTables/jquery.dataTables.js"></script>  
<script src="https://cdn.datatables.net/v/dt/dt-1.10.13/datatables.min.js"></script>  
  
<script type="text/javascript">  
    $(document).ready(function () {  
        $.ajax({  
            type: 'POST',  
            url: '@Url.Action("GetDetailsFromService", "GetProductData")',  
            dataType: "json",  
            success: function (DBdata) { 
                alert(DBdata); //Data To Display in Alertbox
                $('#productDataTable').DataTable({  
                    data: DBdata,  
                    columns: [  
                        { "data": "ProductName" },  
                        { "data": "SupplerName" },  
                        { "data": "CategoryName" }]  
                });  
            }  
        });  
    });  
</script>

Потребляемые данные веб-сервиса для показа.
[HttpPost]  
    public ActionResult GetDetailsFromService()  
    {  
        ProductDetails.GetDetailsService service = new ProductDetails.GetDetailsService();  
            JavaScriptSerializer json = new JavaScriptSerializer();  
            return Json(json.Serialize(service.GetProductData()), JsonRequestBehavior.AllowGet);        
   }

Данные JSON, показанные в окне оповещения от webservice.
Не удается привязать данные к jQuery DataTable.

Пожалуйста, помогите мне разобраться.

1 Ответов

Рейтинг:
5

Richard Deeming

Цитата:
return Json(json.Сериализация (сервис.GetProductData ()), JsonRequestBehavior.AllowGet);

То Json(...) помощник ожидает, что вы передадите объект, который он сериализует в JSON.

Вы передаете строку, содержащую уже сериализованный объект, поэтому вы будете отправлять обратно дважды сериализованную строку.

Снять json.Serialize позвонить и передать данные:
[HttpPost]  
public ActionResult GetDetailsFromService()  
{  
    ProductDetails.GetDetailsService service = new ProductDetails.GetDetailsService();  
    return Json(service.GetProductData(), JsonRequestBehavior.AllowGet);        
}


Возможно, вы также захотите взглянуть на следующую серию статей, которая обеспечивает более продвинутую интеграцию между MVC и DataTables:
Руководство для начинающих по созданию GridView в ASP.NET MVC 5[^]
Таблицы с фильтрацией на стороне сервера, сортировка и разбиение на страницы в ASP.NET в MVC 5[^]
Сетка с расширенным поиском на стороне сервера с использованием jQuery DataTables in ASP.NET MVC 5[^]


CuriousToLearn

Я вам очень благодарна, Ричард Диминг.