Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何结合使用MVCjQuery和Ajax来返回Json对象_C#_Asp.net_Asp.net Mvc 3_Razor - Fatal编程技术网

C# 如何结合使用MVCjQuery和Ajax来返回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]

我希望能够单击一个按钮,让控制器中的函数返回一个JSON对象,该对象可以在我的页面上使用,而无需重新加载页面

我的控制器:

//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;
});