Ajax.BeginForm, Calls Action, возвращает JSON. Как получить доступ к объекту JSON в моей функции JS OnSuccess? - PullRequest
19 голосов
/ 26 октября 2010

Ajax.BeginForm вызывает действие и затем возвращает JSON. Как получить доступ к объекту JSON в моей функции OnComplete js?

так что мой Ajax.BeginForm выглядит так ...

using (Ajax.BeginForm("Coupon", new AjaxOptions { OnSuccess = "CouponSubmitted" }))

и моя OnSuccess функция выглядит следующим образом ...

function CouponSubmitted() {
    var data = response.get_response().get_object();
    alert(data.success);
}

Я тоже пытался ...

function CouponSubmitted(data) {
    alert(data.success); 
}

Мой контроллер "Купон" возвращает это ...

return Json(new { success = false, nameError = nameError, emailError = emailError });

Есть какие-нибудь идеи о том, как получить доступ к возвращенному Json?

Ответы [ 4 ]

34 голосов
/ 26 октября 2010
function OnSuccess(e) { //function CouponSubmitted(data) in the question
   var json = e.get_response().get_object();
   alert(json.success);
}

Это то, что обратный вызов AJAX.BeginForm OnSuccess ожидает от вас, чтобы вернуть свой JSON.

Надеюсь, я сэкономил какое-то время на этом смехотворно под документированной "функцией?".

13 голосов
/ 16 августа 2012

Я наткнулся на этот вопрос, ища ответ, чтобы сделать то же самое в ASP.NET MVC 4, и ничего из вышеперечисленного не сработало, поэтому для любого, кто ищет ответ, данные уже кодируются из json, когда вы его получаетев вашей функции js

 public ActionResult Something()
 {
    return Json(new { result = 0, message = "Testing" });
 } 

...

 new AjaxOptions { HttpMethod = "POST", OnSuccess= "something" }

...

function something(data) {
    switch(data.result)
    {
    case 1:
       alert(data.result)
    break;
    case 0:
        alert(data.result)
    break;
    case -1:
        alert(data.result)
    break;
    default:
        alert(data.message);
    }
}

Это не работает с OnComplete Я предполагаю, что у него нет параметров для получения данных.

2 голосов
/ 04 декабря 2012

в asp.net mvc 4

function CouponSubmitted(data) {
    alert(data.success); 
}

вернет проанализированный 'json'

0 голосов
/ 26 октября 2010

это пример выполнения поста самостоятельно, но концепция та же самая. Обратите внимание на параметр для функции onsuccess. параметр дает вам доступ к тому, что контроллер вернул. Если это данные Json, то это то, что вы получаете. Если контроллер вернул частичное представление, то вы получите HTML для представления. Вы можете вызвать функцию JQuery $ .ParseJSON () для возвращаемых данных.

$.post('/Assessment/GetAssessmentResults/' + SelectedId,   
function onsuccess(e) {  
   var json_object = $.parseJSON(e);  
}, "POST");  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...