istudent Ответов: 1

Datatables.net uncaught typeerror: не удается прочитать свойство 'length'


I am using datatables.net plug in to load data in table.
I called web method in asp.net page and return 
JsonConvert.SerializeObject(result) 
as string; 
I could see below json string as response but I do not know how to bind them with datatables.net

{"d":"[{\"Apple\":507,\"Orange\":6,\"Mango\":75,\"Peach\":638,\"City\":\"SAN ANTONIO\",\"State\":\"TX\"},{\"Apple\":507,\"Orange\":6,\"Mango\":75,\"Peach\":638,\"City\":\"SAN ANTONIO\",\"State\":\"TX\"}]"}


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

Я пытался это сделать
JsonConvert.SerializeObject(new {data =result})

1 Ответов

Рейтинг:
1

Richard Deeming

DataTables ожидает, что возвращаемое значение будет объектом со свойством, называемым data который содержит список данных для отображения:
Аякс | параметры | DataTables.net[^]

Является атрибутом webmethod ASP.NET всегда обертывания возвращенный объект в объект со свойством называется d, чтобы попытаться избежать потенциальной проблемы CSRF, если результатом является массив:
Анатомия тонкой уязвимости JSON | Вы были взломаны[^]

Вы также дважды закодировали результат-ваш веб - метод должен просто возвращать данные напрямую, а не кодировать их в формате JSON.

После того как вы изменили свой веб-метод, чтобы удалить дополнительную кодировку JSON, вы можете использовать dataFilter опция в вашем скрипте для изменения возвращаемых данных в соответствии с ожидаемым форматом. Например:

"ajax": {
    ...
    dataFilter: function (res) {
        var parsed = JSON.parse(res);
        return { data: parsed.d };
    }
},


istudent

Когда я это сделал, то получил какую-то ошибку Row_ID. Я не могу опубликовать точную ошибку прямо сейчас. Но это было что-то о row id

Richard Deeming

Без точного сообщения об ошибке нет никакого способа сказать вам, в чем проблема.

Дайте мне знать, как только вы получите точное сообщение об ошибке.