问题描述
||
我希望能够单击一个按钮,在控制器中具有一个函数,该函数返回一个JSON对象,该对象可以在我的页面上使用,而无需重新加载页面。
我的控制器:
//Dont kNow if HttpPost is right
[HttpPost]
public ActionResult GetPinPoints() {
return jsonobject;
}
我希望能够调用它并使它在AJAX中的页面上返回JSON对象,因此不必重新加载页面。
解决方法
两部分:
1)控制器
public JsonResult GetPinPoints()
{
var stuff = DoStuff();
return Json(stuff);
}
2)视图(通过JQuery)
$(\'#SomeButtonId\').click(function () {
$.ajax({
url: \'/Controller/GetPinPoints\',type: \"POST\",dataType: \"json\",success: function(data) {
$(\'#someSuccessDiv\').html(data).fadeIn();
//Do whatever here,just a poor mans example
},error: function() {
$(\'#someErrorDiv\').html(\'Boo\').fadeIn();
}
});
return false;
});
, 在.ajax中,使用post方法调用此方法:
[HttpPost]
public ActionResult GetPinPoints() {
var obj = new ...
return Json(obj);
}
, 最简单的方法是对Controller
类使用受保护的Json
方法。这将获取一个对象,并使用JsonResult
返回其JSON表示形式。
使用您的示例:
public ActionResult GetPinPoints() {
return Json(jsonobject);
}
如果您不喜欢ASP.NET MVC将对象序列化为JSON的方式,则可以自己做,创建一个ActionResult
,它将对象(或您构建的JSON)取回并将内容写回到响应流中。只要确保您发回的ContentType
的类型为application/json
或text/javascript
即可。
从那里,您可以在jQuery中使用对getJSON
的调用来获取结果,然后根据需要使用该对象。
请注意,如果您不需要任何过于复杂的东西,或者您的设计不需要它,则不需要HttpPostAttribute
。