我正在尝试使用jQuery从MVC用户控件中获取json序列化对象。问题是返回的结果是包含我的控件的页面的完整HTML。页面和控件使用相同的控制器。我试过打破我在控制器中调用的方法,它永远不会被击中。我尝试过各种jQuery Ajax调用,并获得相同的结果。
jQuery代码:
<script type="text/javascript">
$('#Project_GeneralContractor_Id').change(function() {
//alert('<%= Url.Action("GetGeneralContractor", "Projects") %>/1');
$.get('<%= Url.Action("GetGeneralContractor", "Projects") %>', { id: $('#Project_GeneralContractor_Id').val() }, function(data) {
alert(data);
});
});
</script>
控制器代码:
public JsonResult GetGeneralContractor(int id)
{
return Json(_GeneralContractorRepository.Get(id));
}
其中$('#Project_GeneralContractor_Id')是一个下拉列表,_GeneralContractorRepository.Get(id)返回一个单独的GeneralContractor对象。
不确定我发生了什么,但我怀疑jQuery方面,因为我似乎无法在控制器中休息。
答案 0 :(得分:0)
您需要指定type:json($ .get的第四个可选参数)。请参阅$.get arguments。
$.get('<%= Url.Action("GetGeneralContractor", "Projects") %>', { id: $('#Project_GeneralContractor_Id').val() }, function(data) {
alert(data);
}, "json");
答案 1 :(得分:0)
您是否尝试过使用getJSON()?
如果不是,我将倾向于服务器端问题。很难猜到没有看到正在返回的页面。
答案 2 :(得分:0)
这是路由问题。 My Projects控制器有一些特殊的路由案例。我创建了一个单独的控制器来管理GeneralContractors,一切都很顺利。