路径中的非法字符?

时间:2012-11-19 07:29:09

标签: jquery ajax asp.net-mvc

我有以下脚本:

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

为什么我会这样做?

2 个答案:

答案 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,
        // ..
    });
}

作为一种尝试避免重叠变量名称的方法,我使用全部大写。