首页 文章

json通过url返回,但不是通过jquery返回

提问于
浏览
-1

我正在使用Visual Studio开发MVC应用程序,我有一个似乎导致问题的jquery函数 . 我开发了一个返回json对象的动作方法(jquery调用action> action调用服务>服务返回一个对象> action通过map将对象转换为模型然后将模型传递给json) . 可以通过url调用该操作(通过查询字符串传递id参数)并将json返回到网页,但是,当我通过网页调用jquery函数时(单击执行jquery的按钮),在jquery函数的其余部分执行之前,我得到一个“localhost:50216表示发生了错误” . 一直在研究这几天并尝试使用Chrome的调试器无济于事 . 希望这是有道理的,但如果我需要提供更多信息,请告诉我 . 任何见解都会非常感激 . 最好,乔恩

$("#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 = #directEditModal的按钮时),显示“编辑延迟...”,但在此之前 - 我相信当$ .get方法执行时 - 我收到500错误 . 此外,我从未点过警报(“数据:”..)部分 .

所以我看了几篇文章(其中一篇Url.Action: How to Pass Parameter from View to 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);
    });

编辑:我不认为我甚至打我的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

    在问题文本中,你提到“可以通过url调用该操作(通过查询字符串传递id参数)”......但是在你的$ .get调用中你没有提供任何这样的参数 .

    您需要为服务器提供一个参数,其名称与您的操作方法所期望的名称相同,例如:

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

    ? 之后的部分是参数名称,然后 = 之后的部分是要为该参数发送的值 .

相关问题