以下是我的Ajax电话。
$.ajax({
url: '@Url.Action("GetCities", "People")',
type: 'GET',
dataType: 'JSON',
contentType: 'application/json; charset=utf-8',
data: {'id' : id },
success: function (cities) {
alert('success');
},
error:function(err, result){
alert('error');
}
});
&安培;这是我的行动方法。
public ActionResult GetCities(int id)
{
var cities = StateDB.GetCities().Where(c => c.StateId == id);
return Json(cities, JsonRequestBehavior.AllowGet);
}
当我尝试使用http://localhost/People/GetCities/2
访问此内容时,它有效,
但它不适用于上面的ajax调用。
它给了我404'未找到'错误。
我在这做错了什么?
答案 0 :(得分:0)
问题是外部js文件。 Razor引擎不能与外部js文件一起使用,因此url不正确。如果我在视图中输入相同的代码,它是有效的。感谢所有帮助过我的人。
答案 1 :(得分:0)
实际上是另一种方式:外部JS文件无法与Razor引擎一起工作(如果你考虑它就很明显)。如果您在视图(= Razor引擎覆盖的内容)中将javascript变量设置为@ Url.Action('','',),则可以在外部脚本中引用此变量。
在视图中:
<script>
var ajaxUrl = '@Url.Action("GetCities", "People")';
</script>
在您的外部脚本中(假设上面的脚本也被引用):
$.ajax({
url: ajaxUrl,
type: 'GET',
dataType: 'JSON',
contentType: 'application/json; charset=utf-8',
data: {'id' : id },
success: function (cities) {
alert('success');
},
error:function(err, result){
alert('error');
}
});
这不是最佳做法(因为您的外部脚本依赖于可能存在或可能不存在的变量)。