我如何一起使用MVC jQuery和Ajax以便返回Json对象

问题描述

|| 我希望能够单击一个按钮,在控制器中具有一个函数,该函数返回一个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
。