我希望能够单击一个按钮,在我的控制器中有一个函数返回一个JSON对象,该对象可以在我的页面上使用而不需要重新加载页面。
我的控制器:
//Dont know if HttpPost is right
[HttpPost]
public ActionResult GetPinPoints() {
return jsonobject;
}
我希望能够调用它并让它在AJAX页面上返回一个JSON对象,所以我不必重新加载页面。
答案 0 :(得分:1)
在.ajax中,使用post方法调用此方法:
[HttpPost]
public ActionResult GetPinPoints() {
var obj = new ...
return Json(obj);
}
答案 1 :(得分:1)
最简单的方法是使用protected Json
method on the Controller
class。这将获取一个对象并使用JsonResult
返回它的JSON表示。
使用您的示例:
public ActionResult GetPinPoints() {
return Json(jsonobject);
}
如果您不喜欢ASP.NET MVC将对象序列化为JSON的方式,您可以自己动手,创建一个ActionResult
来获取您的对象(或您构建的JSON)并编写内容回到响应流。只需确保您发回的ContentType
类型为application/json
或text/javascript
。
从那里,您可以使用getJSON
in jQuery来调用结果,然后根据需要使用该对象。
请注意,如果您不需要任何过于复杂的内容,或者您的设计不需要它,则不需要HttpPostAttribute
。
答案 2 :(得分:1)
两部分:
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;
});