C# 如何结合使用MVCjQuery和Ajax来返回Json对象
我希望能够单击一个按钮,让控制器中的函数返回一个JSON对象,该对象可以在我的页面上使用,而无需重新加载页面 我的控制器:C# 如何结合使用MVCjQuery和Ajax来返回Json对象,c#,asp.net,asp.net-mvc-3,razor,C#,Asp.net,Asp.net Mvc 3,Razor,我希望能够单击一个按钮,让控制器中的函数返回一个JSON对象,该对象可以在我的页面上使用,而无需重新加载页面 我的控制器: //Dont know if HttpPost is right [HttpPost] public ActionResult GetPinPoints() { return jsonobject; } 我希望能够调用它,并让它在AJAX中的页面上返回JSON对象,这样我就不必重新加载页面。在.AJAX中,使用post方法调用此方法: [HttpPost]
//Dont know if HttpPost is right
[HttpPost]
public ActionResult GetPinPoints() {
return jsonobject;
}
我希望能够调用它,并让它在AJAX中的页面上返回JSON对象,这样我就不必重新加载页面。在.AJAX中,使用post方法调用此方法:
[HttpPost]
public ActionResult GetPinPoints() {
var obj = new ...
return Json(obj);
}
最简单的方法是使用。这将获取一个对象,并返回它的JSON表示形式,使用 以您的例子:
public ActionResult GetPinPoints() {
return Json(jsonobject);
}
如果您不喜欢ASP.NET MVC将对象序列化为JSON的方式,您可以自己来做,创建一个ActionResult
,它将获取您的对象(或您构建的JSON)并将内容写回响应流。只需确保返回的ContentType
类型为application/json
或text/javascript
从那里,您可以使用一个调用来获得结果,然后根据需要使用对象
请注意,如果您不需要任何过于复杂的内容,或者您的设计不需要它,则不需要两个部分:
1) 控制器
public JsonResult GetPinPoints()
{
var stuff = DoStuff();
return Json(stuff);
}
2) 视图(通过JQuery)
啊,很高兴知道。这只是因为缺少输入参数而不需要属性的问题,还是有技术原因?不管怎样,我已经更新了答案。
contentType
应该描述输入参数的编码格式(jQuery的“数据”)。使用ASP.NET WebForms的ScriptServices和PageMethods时,必须使用JSON编码的数据参数和内容类型application/JSON
,以便从中导出JSON响应。使用ASP.NET MVC,您可以使用应用程序/表单url编码的
参数,这更常见,但仍然使用JSON响应。
$('#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;
});