我有以下脚本:
function PostChartValues(meter_id, range_type_id, start_date, end_date) {
$.ajax({
url: '@Url.Action("GetMeterReadingsTimeSeries", "Widget")',
type: 'POST',
data: { MeterType: meter_id, DateRangeType: range_type_id, StartDate: start_date, EndDate: end_date },
beforeSend: function () {
$("#chart_loading_div").show();
},
complete: function () {
$("#chart_loading_div").fadeOut();
},
success: function (result) {
$("#chart").html(result);
},
error: function (result) {
alert("Seçilen kritere uygun veri bulunamadı!");
}
}); //end ajax
} //end PostChartValues
代码正在运行。但是当我收到代码上面的外部.js文件时,我得到了我在标题中写的错误。
为什么我会这样做?
答案 0 :(得分:2)
你有asp.net代码,asp.net-mvc不会解析外部js文件,所以你真的会尝试向@Url.Action("GetMeterReadingsTimeSeries", "Widget")
发出一个不是有效网址的请求。您必须在js文件中手动编写Url.Action("GetMeterReadingsTimeSeries", "Widget")
的结果。
答案 1 :(得分:2)
Musa is absolutely right,但要补充一点:
解决这个问题的一种方法是在HTML(或视图)中的嵌入式脚本中提供渲染的变量,如下所示:
<!-- in your view -->
<script type="text/javascript">
var AJAX_URL = '@Url.Action("GetMeterReadingsTimeSeries", "Widget")';
</script>
然后,在外部JavaScript文件中:
function PostChartValues(meter_id, range_type_id, start_date, end_date) {
$.ajax({
url: AJAX_URL,
// ..
});
}
作为一种尝试避免重叠变量名称的方法,我使用全部大写。