[英]Asp.net MVC 5 Ajax POST throws exception 404 (Not Found) after application is published
本地一切正常(当我使用本地主机运行时),但是在我发布到 IIS 并运行后,它在浏览器控制台中引发异常
POST http://xx.xxx.xx/Dashboard/FilterData 404(未找到)
下面是我的代码,我使用一个按钮来调用这个 javascript 函数
VIEW - 索引
<script type="text/javascript">
function btnFilterClick() {
var txtFDate = $("#dpFrom");
var txtTDate = $("#dpTo");
var ddBranches = $("#ddBranches");
var ddBrands = $("#ddBrands");
$.ajax({
type: "POST",
url: "/Dashboard/FilterData",
data: '{FromDate: "' + txtFDate.val() + '", ToDate: "' + txtTDate.val() + '", SelectedBranches : "'+ ddBranches.val()+'", SelectedBrands : "'+ ddBrands.val()+'" }',
contentType: "application/json; charset=utf-8",
dataType: "json",
success:
function (r)
{
chartPurchaseVsSales.data.datasets[0].data = r.listSalesData;
chartPurchaseVsSales.data.datasets[1].data = r.listPurchaseData;
chartPurchaseVsSales.data.labels = r.xAxisNameForPurchaseAndSales;
chartPurchaseVsSales.update();
}
});
}
</script>
控制器 - 仪表板控制器
[HttpPost]
[Authorize]
public JsonResult FilterData(DashboardModel modelX)
{
DashboardModel model = new DashboardModel();
model.xAxisNameForPurchaseAndSales = new string[] { };
model.xAxisNameForStock = new string[] { };
*Skipped some codes to make it simple*
return Json(model);
}
知道这里有什么问题吗? 我是网络开发的新手! 帮我!
我改为'@Url.Action("FilterData", "Dashboard")'
并且它工作正常! 谢谢你们。
下面是我的代码
$.ajax({
type: "POST",
url: '@Url.Action("FilterData", "Dashboard")',
data: '{FromDate: "' + txtFDate.val() + '", ToDate: "' + txtTDate.val() + '", SelectedBranches : "'+ ddBranches.val()+'", SelectedBrands : "'+ ddBrands.val()+'" }',
contentType: "application/json; charset=utf-8",
dataType: "json",
success:
function (r)
{
chartPurchaseVsSales.data.datasets[0].data = r.listSalesData;
chartPurchaseVsSales.data.datasets[1].data = r.listPurchaseData;
chartPurchaseVsSales.data.labels = r.xAxisNameForPurchaseAndSales;
chartPurchaseVsSales.update();
}
});
解决方案1
您可以从url: "/Dashboard/FilterData",
更改url: "/Dashboard/FilterData",
如下所示
url: '@Url.Action("FilterData", "Dashboard")'
解决方案2
在 HTML 中
<input type="hidden" value="@Url.Action("FilterData", "Dashboard")" id='url' />
在jQuery中
url: $("#url").val()
在 IIS 上发布后,您需要将 ajax 请求中的URL更改为URL: '/YourAppName/Controller/ActionResult' 。 这就是 URL 不应该被硬编码的原因。 您可以在剃刀页面中使用隐藏字段并填充 URL,如 @Url.Action("FilterData", "Dashboard") 并从那里读取它。 我希望它有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.