JSON возвращается через URL, но не через JQuery - PullRequest
0 голосов
/ 29 июня 2018

Я использую Visual Studio для разработки приложения MVC, и у меня есть функция jquery, которая, кажется, вызывает проблемы. Я разработал метод действия, который возвращает объект json (jquery вызывает действие> действие вызывает службу> служба возвращает объект> действие преобразует объект в модель через карту, а затем передает модель в json). Действие может быть вызвано через URL (передача параметра id через строку запроса), и оно возвращает json на веб-страницу, однако, когда я вызываю функцию jquery через веб-страницу (нажмите кнопку, которая выполняет jquery), Я получаю «localhost: 50216 говорит, что произошла ошибка» перед выполнением остальной части функции jquery. В течение нескольких дней изучал эту проблему и безуспешно пытался использовать отладчик Chrome. Надеюсь, это имеет смысл, но если мне потребуется предоставить дополнительную информацию, пожалуйста, дайте мне знать. Любое понимание будет высоко ценится. Лучший, Jon

$("#delayEditModal")
    .on("show.bs.modal",
        function (event) {
            var button = $(event.relatedTarget);
            var delId = button.data("guid");
            var name = button.data("name");
            var modal = $(this);
            $.get("@Url.Action("GetDelayDataForEditing", "TrainActivity")", function(data){
                alert("Data: " + data);
            });
            modal.find(".modal-body").text("Edit the Delay at " + name + " with id " + delId);
            modal.find(".modal-footer #delayEditButton").data("guid", delId);
    });

Я могу попасть во всплывающее окно (когда я нажимаю на кнопку с id = # delayEditModal), в котором отображается «Редактировать задержку при ...», однако до этого - я полагаю, когда $ .get метод выполняется - я получаю ошибку 500. Кроме того, я никогда не нажимаю на часть с предупреждением («Данные:» ..).

Итак, я просмотрел пару статей (одна из них Url.Action: Как передать параметр из View в Controller? ) и внес некоторые изменения в мой код. Все еще безуспешно. Будет продолжать исследования решений.

$("#delayEditModal")
    .on("show.bs.modal",
        function (event) {
            var button = $(event.relatedTarget);
            var delId = button.data("guid");
            var name = button.data("name");
            var modal = $(this);
            $.ajax({
                type: "GET",
                url: "@Url.Action("GetDelayDataForEditing")/" + delId,
                //data: delId,
                success: function () {
                    alert("Success");
                    //$('#delays-grid').data('kendoGrid').dataSource.read();
                    //$("#delayAddModal").modal("hide");
                },
                error: function () { alert("error"); }
            });
            //modal.find(".modal-body").text("Edit the Delay at " + name + " with id " + delId);
            modal.find(".modal-footer #delayEditButton").data("guid", delId);
    });

Edit: я не думаю, что я даже ударил мой метод ActionResult. Я установил там точку разрыва и никогда ее не достигну.

Редактировать: Я наконец-то смог достичь "Успеха":

$("#delayEditModal")
        .on("show.bs.modal",
        function (event) {
                var button = $(event.relatedTarget);
                var delId = button.data("guid");
                var name = button.data("name");
            var modal = $(this);

                $.ajax({
                    type: "GET",
                    url: "@Url.Action("GetDelayDataForEditing")/" + "?delayId=" + delId,
                    dataType: 'json',
                    //data: delId,
                    success: function (data) {
                        alert("Success" + data);
                        //$('#delays-grid').data('kendoGrid').dataSource.read();
                        //$("#delayAddModal").modal("hide");
                    },
                    error: function () { alert("error"); }
                });
                modal.find(".modal-body").text("Edit the Delay at " + name + " with id " + delId);
                modal.find(".modal-footer #delayEditButton").data("guid", delId);
        });

Однако я хотел бы выяснить, как отображать необработанное содержимое объекта json в модале. Это должно быть задачей на понедельник. Большое спасибо всем за то, что поделились вашими советами и идеями. Хороших выходных!

1 Ответ

0 голосов
/ 02 июля 2018

В тексте вопроса вы упоминаете, что «действие может быть вызвано через url (передавая параметр id через строку запроса)» ... однако в вашем вызове $ .get вы не предоставляете такой параметр.

Вам необходимо предоставить серверу параметр, имя которого совпадает с именем, ожидаемым вашим методом действия, например:

url: "@Url.Action("GetDelayDataForEditing")/" + "?delayId=" + delId,

Часть после ? является именем параметра, затем часть после = является значением для отправки для этого параметра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...