路径中的非法字符?

问题描述:

我有以下脚本:路径中的非法字符?

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

为什么我得到这个?

+1

你能澄清一下吗?你是什​​么意思的外部js文件。 –

你在那里有asp.net代码,asp.net-mvc没有解析外部js文件,所以你真的试图向@Url.Action("GetMeterReadingsTimeSeries", "Widget")发出一个不是有效url的请求。您必须在您的js文件中手动输入Url.Action("GetMeterReadingsTimeSeries", "Widget")的结果。

+0

是的。你说得对,它有效。非常感谢。 –

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

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