Ajax.BeginForm,Calls Action,返回JSON,如何访问OnSuccess JS函数中的JSON对象?

时间:2010-10-26 04:28:25

标签: asp.net-mvc json jquery

Ajax.BeginForm调用一个动作,然后返回JSON。 如何在OnComplete js函数中访问JSON对象?

所以我的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 个答案:

答案 0 :(得分:34)

function OnSuccess(e) { //function CouponSubmitted(data) in the question
   var json = e.get_response().get_object();
   alert(json.success);
}

这就是AJAX.BeginForm OnSuccess回调期望你做的事情来恢复你的JSON。

希望我在一段时间内将这个可笑的“功能”保存在别人身上?

答案 1 :(得分:13)

我遇到了这个问题,寻找在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 我认为它没有paramtars来重现数据。

答案 2 :(得分:2)

在asp.net mvc 4中

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

将返回已解析的'json'

答案 3 :(得分:0)

这是自己做这个帖子的一个例子,但概念是一样的。注意onsuccess函数的参数。该参数使您可以访问控制器返回的内容。如果它是Json数据那么这就是你得到的。如果控制器返回部分视图,那么您将获得视图的html。您可以对返回的数据调用JQuery $ .ParseJSON()函数。

$.post('/Assessment/GetAssessmentResults/' + SelectedId,   
function onsuccess(e) {  
   var json_object = $.parseJSON(e);  
}, "POST");