我正在使用Visual Studio开发MVC应用程序,并且我有一个jquery函数,它似乎引起了问题。我开发了一个返回json对象的action方法(jQuery调用action> action调用服务> service返回一个对象> action通过映射将对象转换为模型,然后将模型传递给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);
});
我能够转到显示“ 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对象的原始内容。这将是周一的任务。非常感谢大家分享您的建议和见解。周末愉快!
答案 0 :(得分:0)
在问题文本中,您提到“可以通过url调用操作(通过查询字符串传递id参数)” ...但是在$ .get调用中,您没有提供任何此类参数。
您需要为服务器提供一个参数,其名称与您的操作方法所期望的名称相同,例如:
url: "@Url.Action("GetDelayDataForEditing")/" + "?delayId=" + delId,
?
之后的部分是参数名称,然后=
之后的部分是该参数要发送的值。