1

我有以下脚本:

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 文件时,我得到了我在标题中写的错误。

为什么我会得到这个?

4

2 回答 2

2

Musa 是绝对正确的,但要补充一点:

解决此问题的一种方法是在 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,
        // ..
    });
}

为了避免变量名重叠,我使用全大写。

于 2012-11-19T07:41:26.950 回答
2

您那里有 asp.net 代码,asp.net-mvc 不解析外部 js 文件,因此您实际上会尝试向其发出@Url.Action("GetMeterReadingsTimeSeries", "Widget")不是有效 url 的请求。您必须Url.Action("GetMeterReadingsTimeSeries", "Widget")在 js 文件中手动写入结果。

于 2012-11-19T07:36:11.897 回答