Как использовать MVC jQuery и Ajax вместе для возврата объектов Json - PullRequest
1 голос
/ 31 мая 2011

Я хочу иметь возможность нажимать кнопку, чтобы функция в моем контроллере возвращала объект JSON, который можно использовать на моей странице без перезагрузки страницы.

Мой контроллер:

//Dont know if HttpPost is right 
[HttpPost] 
public ActionResult GetPinPoints() {
    return jsonobject;
}

Я хочу иметь возможность вызвать это и заставить его возвращать объект JSON на странице в AJAX, поэтому мне не нужно перезагружать страницу.

Ответы [ 3 ]

1 голос
/ 31 мая 2011

Самый простой способ сделать это - использовать защищенный Json метод для Controller класса . Это возьмет объект и вернет его JSON-представление, используя JsonResult.

Используя ваш пример:

public ActionResult GetPinPoints() {
    return Json(jsonobject);
}

Если вам не нравится, как ASP.NET MVC сериализует ваш объект в JSON, вы можете сделать это самостоятельно, создав ActionResult, который будет принимать ваш объект (или созданный вами JSON) и записывать содержимое обратно в поток ответов. Просто убедитесь, что отправляемый вами ContentType имеет тип application/json или text/javascript.

Оттуда вы можете использовать вызов getJSON в jQuery , чтобы получить результаты, а затем использовать объект по своему желанию.

Обратите внимание, что если вам не нужно ничего слишком сложного или ваши дизайны не требуют этого, вам не нужно HttpPostAttribute.

1 голос
/ 31 мая 2011

Две части:

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;
});
1 голос
/ 31 мая 2011

В .ajax используйте метод post для вызова этого метода:

[HttpPost] 
public ActionResult GetPinPoints() {
    var obj = new ...
    return Json(obj);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...