Логический поток, которого я пытаюсь достичь, выглядит следующим образом:
Выберите фильтры из всплывающего окна => Создайте макет основного вида с заголовками и кнопками => нажатие кнопки приведет к отображению данных внутри
div id = "@Model.ContainerSafeName-activitytable"
Ниже приведены соответствующие биты:
Основной макет:
@model Models.Model
@using Helpers;
@{
Layout = "~/Views/Shared/PartialPrint.cshtml";
}
<div class = "card card-block">
<div class='container'>
<div class = "card row">
<div class = "card-header text-center text-white" role = "tab" id = "Heading">
<h5>Activities</h5>
</div>
<div>
<button role = "button"
data-type = "Activity"
type = "button"
class = "btn btn-outline-primary btn-sm col-sm-12 col-md-12"
data-filters='@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model.filters))'
data-url = "@Url.Action("Activity_Page_activity", "Activity", new { Area = "Activity" })"
data-containername = "@Model.ContainerSafeName-activitytable"
id = "btnReport_activity">
Show Data
</button>
</div>
<div id = "@Model.ContainerSafeName-activitytable">
</div>
</div>
Бит Javascript:
$('#btnReport_activity').click(function () {
var url = $(this).data('url');
var filters = $(this).data('filters');
//var filtersstring = JSON.stringify(filters)
var containername = $(this).data('containername');
debugger
$.ajax({
cache: false,
url: url,
data: filters,
dataType: 'json',
contentType: 'application/json; charset=utf-8',
type: 'GET'
})
.done(function (result) {
alert("good");
$("#" + containername).html(result);
$(this).toggle();
})
.fail(function (jqXHR, status, errorThrown) {
alert(errorThrown);
});
});
Ajax не работает с ошибкой недопустимого символа. Фильтры - это просто список значений, переданных в mainLayout из контроллера. Я подозреваю, что он возвращает что-то плохое.
Может ли кто-нибудь указать мне, где это может пойти не так? Пожалуйста, дайте мне знать, если мне понадобится дополнительная информация.
PS: Я публикую это не по прихоти, я провел много исследований до этого (включая json.stringifying data и т.д.), буквально ударившись о стену на этом этапе.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Мне не нужен тип данных JSON. Мне пришлось внести исправления, как показано ниже, чтобы получить правильный ответ:
$('#btnReport_activity').click(function () {
var url = $(this).data('url');
var filters = $(this).data('filters');
//var filtersstring = JSON.stringify(filters)
var containername = $(this).data('containername');
$.ajax({
cache: false,
url: url,
data: JSON.stringify(filters),
contentType: 'application/json; charset=utf-8',
type: 'POST'
})
.done(function (result) {
alert("good");
$("#" + containername).html(result);
$(this).toggle();
})
.fail(function (jqXHR, status, errorThrown) {
alert(errorThrown);
});
});
Какой ответ? Это действительный JSON?