我在我的控制器中使用一种从API导入数据的方法。我希望从两个位置调用此方法。首先是视图(当前正在工作),其次是javascript函数。
启动控制器方法:
[ActionName("ImportRosters")]
[HttpPost]
public ActionResult PerformImportRosterData(int id, int? actualLength, int? rosterLength)
{
var authenticator = Authenticator(id);
var rosters = authenticator.Api().RosterData().ToDictionary(x => x.Id);
var databaseRosterDatas = SiteDatabase.DeputyRosterData.Where(x => x.SiteID == id)
.ToDictionary(x => x.Id);
Javascript功能:
$("#btnDeputyRunNowUpdate").click(function() {
$("#btnRunDeputyNow").modal("hide");
ActualLength = $("#actualRunLength").val();
RosterLength = $("#rosterRunLength").val();
$.ajax({
type: "POST",
url: "/deputy/PerformImportRosterData",
data: { SiteIDRoster, ActualLength, RosterLength }
});
SiteIDRoster = null;
location.reload();
$("#btnRunDeputyNow").modal("hide");
toast.show("Import Successful", 3000);
});
正在设置所有值,但我在网址行上收到404错误 POST https://example.org/deputy/PerformImportRosterData 404()
我需要一种能够从html和JS
调用这个c#方法的方法答案 0 :(得分:1)
如果您要修改AJAX中的URL,可以这样做。它应该看起来像
url: '<%= Url.Action("YourActionName", "YourControllerName") %>'
或
url: @Url.Action("YourActionName", "YourControllerName")
还有一件事,我不知道你是否对呼叫的结果做了什么。你的脚本没有成功部分
success: function(data) {//do something with the return}
并且在您的通话中使用错误处理程序会非常有帮助。 关于AJAX应该如何的完整示例:
$.ajax({
url: "target.aspx",
type: "GET",
dataType: "html",
success: function (data, status, jqXHR) {
$("#container").html(data);
alert("Local success callback.");
},
error: function (jqXHR, status, err) {
alert("Local error callback.");
},
complete: function (jqXHR, status) {
alert("Local completion callback.");
}
})
有关AJAX的优秀教程,请阅读this document
评论后更改: 我目前的代码如下:
$("#btnDeputyRunNowUpdate").click(function() {
$("#btnRunDeputyNow").modal("hide");
ActualLength = $("#actualRunLength").val();
RosterLength = $("#rosterRunLength").val();
$.ajax({
type: "POST",
url: '<%= Url.Action("PerformImportRosterData", "DeputyController") %>',
data: { SiteIDRoster, ActualLength, RosterLength },
success: function(data) {
console.log(data);
console.log("TESTHERE");
}
});
}
<强>更新强> 注意到还有一件事。您在控制器和AJAX中的参数不匹配。请尝试用以下代码替换AJAX调用中的几行:
url: "/deputy/PerformImportRosterData",
data: { id: yourIDValue, actualLength: youractualLengthValue,
rosterLength :yourrosterLengthValue }
记得在javascript中设置所有变量值,如果它们没有值,则将它们设置为null。
您可以尝试复制下面的粘贴代码
$.ajax({
type: "POST",
url: "/deputy/PerformImportRosterData",
data: { SiteIDRoster:999, ActualLength:1, RosterLength:2 }
});
让我知道它是否会造成任何错误。
答案 1 :(得分:0)
尝试解决几天后,我通过创建两种导入数据的方法创建了一种解决方法。一个用于httpPost,另一个用于从javascript导入调用。
不是一个很好的解决方案,但它有效。谢谢你的帮助Yuri