Member 359326 Ответов: 1

Datatables.net Аякс не работает-почему?


Код, который я прокомментировал, не работает. Он потерпел неудачу по ошибке: функция.... почему?
Я закончил тем, что использовал loadData() функцию обхода работы для выполнения этой задачи.

Может ли кто-нибудь сказать, что с ним не так (нерабочий код)?

Я могу опубликовать больше кода, если вам нужно больше...

Спасибо.
-------
    <script type="text/javascript">
        $(document).ready(function () {
            loadData();
        });
// What is wrong with the code?
        //$(document).ready(function () {
            //var refDataTable = $("#example").dataTable({
            //    processing: true,
            //    serverSide: true,
            //    ajax: {                   
            //        data: '{}',
            //        type: "POST",
            //        url: "BolAddress.aspx/GetAddress",
            //        contentType: "application/json; charset=utf-8",
            //        dataType: "json",
            //        success: function (response) {
            //            alert(response.d);                      
            //        },
            //        failure: function (response) {
            //            alert(response.d);
            //        },
            //        error: function (response) {
            //            alert(response.d);
            //        }
            //    },
            //    columns: [
            //        { data: "CardId" },
            //        { data: "CardType" },
            //        { data: "Company" },
            //        { data: "Address" },
            //        { data: "City" },
            //        { data: "State" },
            //        { data: "Zip" },
            //        { data: "Phone" },
            //        { data: "Contact" },
            //        { data: "Description" }
            //    ]
            //})
        //});
// ------------------------------------------
        function loadData() {
            $.ajax({
                type: "POST",
                url: "BolAddress.aspx/GetAddress",
                data: '{}',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (response) {
                    OnSuccess(response);
                },
                failure: function (response) {
                    alert(response.d);
                },
                error: function (response) {
                    alert(response.d);
                }
            });
        };
        function OnSuccess(response) {
            var cards = response.d;
            var cardtable = $("#example");
            $(cards).each(function () {
                var row = $("<tr />");
                cardtable.append(row);
                row.append($("<td>" + this.CardId + "</td>"));
                row.append($("<td>" + this.CardType + "</td>"));
                row.append($("<td>" + this.Company + "</td>"));
                row.append($("<td>" + this.Address + "</d>"));
                row.append($("<td>" + this.City + "</td>"));
                row.append($("<td>" + this.State + "</td>"));
                row.append($("<td>" + this.Zip + "</td>"));
                row.append($("<td>" + this.Phone + "</td>"));
                row.append($("<td>" + this.Contact + "</td>"));
                row.append($("<td>" + this.Description + "</td>"));
            });
            var refDataTable = $("#example").dataTable();
        }
    </script>


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

Это не работает, несмотря ни на что. Он потерпел неудачу на "ошибке:" и предупредил меня ответом.

Patrice T

И вы планируете сообщить нам точное сообщение об ошибке и положение или мы должны догадаться ?

Member 359326

Спасибо, что занялись этим вопросом. Я это очень ценил.

ошибка:недопустимый формат JSON примитивные из логики
ошибка: функция (ответ) {
предупреждение(ответ.д);
}
Он говорит {\"Message\":\ " Invalid JSON primitive:... в отладчике.

Проблема связана с данными: '{} ' и serverside: true. Я действительно изменил их на data: {} и bserverside: true, тогда я получил, что это работает частично.

Он загружает данные со стороны сервиса, но datatables.net не загружает их автоматически.

Вот вторая версия этого кода.

===============================
$(документ).готово(функция () {
var refDataTable = $("#example"). dataTable({
обработка: true,
bserverSide: правда,
Аякс: {
данные: {},
тип: "пост",
url: "BolAddress. aspx/GetAddress",
contentType: "application/json; charset=utf-8",
тип данных: "json",
успех: OnSuccess,
отказ: функция (ответ) {
предупреждение(ответ.д);
},
ошибка: функция (ответ) {
предупреждение(ответ.responseText);
}
},
"колонки": [
{"данные": "CardId" },
{"data": "CardType" },
{"данные": "компания" },
{ "адрес данных" },
{"данные": "город" },
{"данные": "состояние" },
{"данные": "Zip" },
{"данные": "телефон" },
{ "данные": "контакт" },
{ "описание данных" }
]
})
});

и я должен загрузить данные вручную в datatables, но это не работает правильно.
функция OnSuccess(ответ) {
ВАР карт = ответ.д;
var cardtable = $("#пример");
$(карты). each (функция () {
ВАР строки = $("");
cardtable. append(строка);
row. append($("" + this.CardId + ""));
row. append($("" + this.CardType + ""));
row. append($("" + this.Компания + ""));
row. append($("" + this.Адрес + ""));
row. append($("" + this.Город + ""));
row. append($("" + this.Государство + ""));
row. append($("" + this.Zip + ""));
row. append($("" + this.Телефон + ""));
row. append($("" + this.Контакт + ""));
row. append($("" + this.Описание + ""));
});
var refDataTable = $("#example"). dataTable();
}

ZurdoDev

1. Вы отметили этот вопрос как C, но ясно, что это не C, это JavaScript. Пожалуйста, исправьте это.
2. Вы сказали: "это не удалось из-за ошибки: функция ... почему?" Откуда нам знать? Раскомментируйте код, запустите его, получите ошибку и точную строку, которая вызывает ошибку, и тогда кто-то может помочь. Ошибка подскажет вам, что происходит.

Member 359326

Это мой первый раз, когда я публикую свой вопрос здесь. Я постараюсь исправить.

Member 359326

Я оглядываюсь... Я не вижу никаких ссылок, которые я мог бы изменить.:(

Member 359326

Я оглядываюсь... Я не вижу никаких ссылок, чтобы изменить категорию...:(.

ZurdoDev

Нажмите кнопку улучшить вопрос

Patrice T

Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.

1 Ответов

Рейтинг:
2

Member 359326

Наконец-то у меня получилось. Недостающая часть моего предыдущего кода - это "dataSrc". Я должен сказать datatables.net чтобы загрузить данные из response. d, которые являются данными с сервера.

Спасибо, что посмотрели на этот вопрос.

$(document).ready(function () {
     var refDataTable = $("#example").dataTable({
         processing: true,
         bserverSide: true,
         ajax: {
             data: {},
             type: "POST",
             url: "BolAddress.aspx/GetAddress",
             contentType: "application/json; charset=utf-8",
             dataType: "json",
             // need to tell DataTables.net to load server data from response.d (asp.net List(of Address)).
             dataSrc: function (response) {
                 return response.d;
             },
             // no need --
             //success: OnSuccess,
             failure: function (response) {
                 alert(response.d);
             },
             error: function (response) {
                 alert(response.responseText);
             }
         },
         "columns": [
             { "data": "CardId" },
             { "data": "CardType" },
             { "data": "Company" },
             { "data": "Address" },
             { "data": "City" },
             { "data": "State" },
             { "data": "Zip" },
             { "data": "Phone" },
             { "data": "Contact" },
             { "data": "Description" }
         ]
     })
 });