Jquery Asp.net MVC 5 Ajax POST在应用程序发布后引发异常404(未找到)
在本地(当我使用localhost运行时)一切正常,但在我发布到IIS并运行之后,它在浏览器控制台中抛出异常 邮政404(未找到) 下面是我的代码,我使用一个按钮来调用这个javascript函数 查看-索引Jquery Asp.net MVC 5 Ajax POST在应用程序发布后引发异常404(未找到),jquery,asp.net-mvc,post,asp.net-mvc-5,asp.net-ajax,Jquery,Asp.net Mvc,Post,Asp.net Mvc 5,Asp.net Ajax,在本地(当我使用localhost运行时)一切正常,但在我发布到IIS并运行之后,它在浏览器控制台中抛出异常 邮政404(未找到) 下面是我的代码,我使用一个按钮来调用这个javascript函数 查看-索引 <script type="text/javascript"> function btnFilterClick() { var txtFDate = $("#dpFrom"); var txtTDate = $("#dpTo");
<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>
你知道这是怎么回事吗?我是网络开发的新手!救救我 解决方案1 您可以从
url:“/Dashboard/FilterData”
更改,如下所示
url: '@Url.Action("FilterData", "Dashboard")'
解决方案2
在HTML中
<input type="hidden" value="@Url.Action("FilterData", "Dashboard")" id='url' />
您需要将ajax请求中的URL更改为
URL:“/YourAppName/Controller/ActionResult”,在IIS上发布后。这就是为什么URL永远不应该硬编码。您可以在razor页面中使用隐藏字段并填充URL,如@URL.Action(“FilterData”、“Dashboard”)并从中读取。我希望它能有所帮助。我改成了
'@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();
}
});
或者,更具体地说:
url:'@url.Action(“FilterData”,“Dashboard”)”
只要你把它保存在.cshtml中,而不是放在.jsfreedomn-m中,你能给我看一个片段吗?我得到异常未捕获SyntaxError:无效的正则表达式flags@Phong我的观点是,如果你把它放在javascript中,你必须用引号把它括起来,否则你会得到无效的javascript,很可能是“无效的正则表达式标志”正在发生-即您的代码:url:/dashboard/filterdata
所需代码:url:'/dashboard/filterdata'
(处理后)是,当我们在javascriptNo中使用此代码时,需要单引号-输出为:url:“+/dashboard/filterdata+”
-哪个字符串无效?索引的URL是什么?Dashboard/Index@freedomn mURL放在单引号中(来自源代码),否则它会显示异常无效的正则表达式我正在尝试确定路径是/dashboard/filterdata
还是其他路径,例如/yourapp/dashboard/filterdata
不确定为什么会投反对票,其他两个答案是正确的,同时暗示,不要提供具体的/*correct*细节。事实上,我是在代码中给出这个想法的(只是缺少引号)。所以OP只是测试并给我反馈,而不是回答他自己的问题。
url: $("#url").val()
$.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();
}
});