asp.net mvc - por - Ajax.BeginForm, Acción de llamadas, Devuelve JSON, ¿Cómo accedo al objeto JSON en mi función OnSuccess JS?
jquery ajax mvc controller (4)
Ajax.BeginForm
llama a una acción y luego devuelve JSON. ¿Cómo OnComplete
objeto JSON en mi función OnComplete
js?
así que mi Ajax.BeginForm
parece a esto ...
using (Ajax.BeginForm("Coupon", new AjaxOptions { OnSuccess = "CouponSubmitted" }))
y mi función OnSuccess
ve así ...
function CouponSubmitted() {
var data = response.get_response().get_object();
alert(data.success);
}
También intenté ...
function CouponSubmitted(data) {
alert(data.success);
}
Mi controlador "Cupón" devuelve esto ...
return Json(new { success = false, nameError = nameError, emailError = emailError });
¿Alguna idea sobre cómo acceder al Json que se devuelve?
Este es un ejemplo de cómo hacer la publicación usted mismo, pero el concepto es el mismo. Observe el parámetro a la función onsuccess. El parámetro le da acceso a quien haya devuelto el controlador. Si son datos de Json, entonces eso es lo que obtienes. Si el controlador devolvió una vista parcial, entonces obtienes el html para la vista. Puede llamar a la función JQuery $ .ParseJSON () en los datos devueltos.
$.post(''/Assessment/GetAssessmentResults/'' + SelectedId,
function onsuccess(e) {
var json_object = $.parseJSON(e);
}, "POST");
Me topé con esta pregunta buscando la respuesta para hacer lo mismo en ASP.NET MVC 4, y ninguno de los anteriores funcionó, así que para cualquiera que busque la respuesta, los datos ya están codificados en json cuando los recibe en su js función
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);
}
}
Esto no funciona con OnComplete y, en mi opinión, no tiene parámetros para recibir datos.
en asp.net mvc 4
function CouponSubmitted(data) {
alert(data.success);
}
volverá analizado ''json''
function OnSuccess(e) { //function CouponSubmitted(data) in the question
var json = e.get_response().get_object();
alert(json.success);
}
Esto es lo que la devolución de llamada de AJAX.BeginForm OnSuccess espera que usted haga para recuperar su JSON.
Espero haber salvado a alguien más en este ridículamente bajo la "característica?" Documentada.