json是通过url返回的,而不是通过jquery返回的

时间:2018-06-29 16:04:55

标签: jquery model-view-controller

我正在使用Visual Studio开发MVC应用程序,并且我有一个jquery函数,它似乎引起了问题。我开发了一个返回json对象的action方法(jQuery调用action> action调用服务> service返回一个对象> action通过映射将对象转换为模型,然后将模型传递给j​​son)。可以通过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);
    });

我能够转到显示“ Edit the at at ...”的弹出窗口(当我单击具有id =#delayEditModal的按钮时),但是在此之前,我相信$ .get方法执行-我收到500错误。而且,我从没打过alert(“ Data:” ..)部分。

因此,我看了几篇文章(其中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 :(得分:0)

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

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

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

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