我正在尝试通过AJAX帖子填充基于上一个dropdown的值的dropdown,然而,url没有与控制器中的方法正确连接。在FireBug中声明以下错误:
"NetworkError: 500 Internal Server Error - http://localhost:1079/RoundDetail/GetCourses"这是我的控制器:
public class RoundDetailController : Controller
{
private GolfTrackerEntities2 db = new GolfTrackerEntities2();
public JsonResult GetFacilities(int id)
{
var facilities = db.Facilities.Distinct().ToList();
return Json(facilities, JsonRequestBehavior.AllowGet);
}
}下面是我的javascript:
function changeCourses() {
var val = $(this).val();
$courses = $('#ddlCourses');
$.ajax({
url: "@Url.Action("GetCourses", "RoundDetail") ",
type: "POST",
dataType: 'json',
data: "{ 'facilityId':'" + val + "'}",
contentType: "application/json",
success:
function (msg) {
console.log(msg);
var list = JSON.parse(msg.d);
for (var i = 0; i < list.length; i++) {
courseList += '<option value="' + course.Abbr + '">' + course.Name + '</option>';
}
$courses.html(courseList);
}
});
}发布于 2013-06-21 04:37:51
我想问题出在你的控制器上。您指定了另一个操作,而不是操作导致错误,所以很难说是什么问题。另外,请单击firebug中的行并查看响应正文-它包含有关服务器错误的详细信息。
对于内容类型数据,似乎不需要对javascript对象进行字符串化,您可以将{ facilityId: val }传递给application/json。
此外,我不确定使用字符串连接构建选项列表是否正确-因为它不是javascript注入安全的。您可以使用
$courses.append($("<option ></option>").attr("value", course.Abbr).text(course.Name));
而不是。
https://stackoverflow.com/questions/17223200
复制相似问题