Ajax.BeginForm, Вызывает действие, Возвращает JSON, Как мне получить доступ к объекту JSON в моей функции JS OnSuccess?
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, который возвращается?
Ответы
Ответ 1
function OnSuccess(e) { //function CouponSubmitted(data) in the question
var json = e.get_response().get_object();
alert(json.success);
}
Это то, что ожидает от вас обратный вызов AJAX.BeginForm OnSuccess, чтобы вернуть ваш JSON.
Надеюсь, что я некоторое время спасал кого-то на этом смехотворно по документированной "функции?".
Ответ 2
Я столкнулся с этим вопросом, ища ответ, чтобы сделать то же самое в 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. Я уверен, у него нет параметров для получения данных.
Ответ 3
в asp.net mvc 4
function CouponSubmitted(data) {
alert(data.success);
}
вернет обработанный 'json'
Ответ 4
Это пример выполнения поста, но концепция одинаков. Обратите внимание на параметр для функции onsuccess. параметр дает вам доступ к любому возвращаемому контроллеру. Если это данные Json, то это то, что вы получаете. Если контроллер вернул частичный вид, вы получите html для представления. Вы можете вызвать функцию JQuery $.ParseJSON() для возвращаемых данных.
$.post('/Assessment/GetAssessmentResults/' + SelectedId,
function onsuccess(e) {
var json_object = $.parseJSON(e);
}, "POST");