Uwakpeter Ответов: 1

Как отобразить ajax-ответ на datatable при просмотре в браузерах firefox и edge


У меня есть отчет i, который отлично отображается в Google chrome, но при попытке просмотра в браузере Firefox или Edge ответ json отображается в браузере вместо datatable. Пример ответа на firefox ниже:
"[{\"RegisteredBy\":\"Admin\",\"PatientRegNo\":\"De723\",\"PaymentType\":\"Cash\"}]"


Я попытался включить приведенный ниже код в функцию ajax и действие результата json соответственно:
contentType: 'application/json, charset=utf-8',

return Json(data,JsonRequestBehavior.AllowGet);


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

Моя Функция Ajax:
var str = $("#frmReport").serialize();
        $("#searchBtn").prop("disabled", true);
        $.ajax({
            url: url,
            type: "POST",
            data: str,
            cache: false,
            dataType: "json",              
            success: function (_data) {
                var arr = $.map(JSON.parse(_data), function (el) { return el });                   
                table.clear();
                table.destroy();
                $('#tblReport').dataTable({
                    data: arr,
                    columns: [
                        { "data": "RegisteredBy"},
                        { "data": "PatientRegNo"},
                        { "data": "PaymentType"},                           
                    ],
                    dom: 'Bfrtip',
                    buttons: [
                        'copy', 'csv', 'excel',
                        {
                            extend: 'pdfHtml5',
                            orientation: 'portrait',
                            pageSize: 'A4'
                        }

                    ]
                });

            }
        });
        table = $("#tblReport").DataTable();
    });
});


Мой Код Метода Действия JsonResult:
getEntries = superAdminForBillingRepository.GetByRegNoOnly(regNo);
var data = Newtonsoft.Json.JsonConvert.SerializeObject(getEntries);
return Json(data);


Я хочу иметь возможность просматривать отчет на datatable независимо от используемого браузера.

Richard Deeming

Какие-нибудь ошибки в консоли браузера?

Если вы вызываете это в ответ на событие "щелчок", вы обязательно позвонили e.preventDefault(); чтобы предотвратить отправку формы?

Uwakpeter

это ошибка из консоли браузера:

Политика безопасности контента: настройки страницы заблокировали загрузку ресурса по адресу http://localhost:55577/favicon.ico (“default-src”).

Я удалил фавикон.файл ico из корня приложения, но проблема все еще сохраняется.

Пожалуйста, могу ли я назвать это e.preventDefault()?

я много использовал cdn в приложении, я пытался использовать мета-тег политики безопасности в макете, что делает приложение не очень хорошо отображаемым.

Richard Deeming

Предположим, что код, который вы показали, является обработчиком событий jQuery для searchBtn кнопка:

$("#searchBtn").click(function(e){
    e.preventDefault();
    ... the rest of your handler code here...
});

Uwakpeter

Спасибо, сэр, это сработало, отчеты теперь отлично отображаются во всех браузерах.

1 Ответов

Рейтинг:
0

Richard Deeming

Как обсуждалось в комментариях, обработчик нажатия кнопки должен вызвать preventDefault чтобы предотвратить отправку формы кнопкой.

$("#searchBtn").click(function(e){
    e.preventDefault();
    ... the rest of your handler code here...
});

event.preventDefault() | документация по API jQuery[^]

Эквивалент для обычного JavaScript:
Event.preventDefault() - веб-API | MDN[^]
(Не работает в IE8 или более ранних версиях.)