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

そこにasp.netコードがあり、asp.net-mvcは外部jsファイルを解析しないため、実際に@Url.Action("GetMeterReadingsTimeSeries", "Widget")は有効なURLではない要求を行おうとします。Url.Action("GetMeterReadingsTimeSeries", "Widget")の結果をjsファイルに手動で書き込む必要があります。

于 2012-11-19T07:36:11.897 に答える
2

ムーサは絶対に正しいですが、それに加えて:

これを回避する1つの方法は、次のように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 に答える