2010-10-26 50 views
19

Ajax.BeginForm調用一個動作,然後返回JSON。 如何訪問我的OnComplete js函數中的JSON對象?Ajax.BeginForm,調用動作,返回JSON,如何在我的OnSuccess 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的任何想法?

回答

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

這就是AJAX.BeginForm的onSuccess回調希望你做的就是你的JSON回來。

希望我在這個荒謬的文件「功能?」下保存了別人一些時間。

+0

似乎MVC3與不顯眼的ajax使用不同的方法。 OnSuccess的第一個參數是數據對象。 – pauloya 2011-10-21 11:05:56

+8

['CouponSubmitted(data,status,xhr)'](http://stackoverflow.com/a/7467032/907779)[tag:asp.net-mvc3]。 – 2012-02-19 11:07:13

+0

@Joel - 謝謝。這是記錄在任何地方? ASP.NET MVC似乎非常無證。 – 2012-03-27 15:13:03

0

這是一個自己做帖子的例子,但概念是一樣的。注意onsuccess函數的參數。該參數讓您可以訪問控制器返回的信息。如果它是Json數據,那麼這就是你得到的。如果控制器返回了部分視圖,那麼您將獲得該視圖的html。你可以在返回的數據上調用JQuery $ .ParseJSON()函數。

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

不幸的是這並不在這種情況下工作。 – Jason 2010-10-26 14:05:07

13

我碰到這個問題尋找答案在ASP.NET MVC 4中做同樣的事情,並沒有上述工作,所以對於任何人尋找答案,數據已經從json編碼時,你recive它在你的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我assuame它的工作沒有paramtars來recive數據。

+0

謝謝謝謝謝謝你謝謝你。花了我很長時間才知道如何做到這一點。我只需要OnSuccess – Keerigan 2012-10-20 15:41:58

+1

有關OnComplete的最後一個注意事項需要更大。這也是我的問題。 – Joe 2013-02-01 20:29:19

2

在asp.net mvc的4

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

將返回解析 'JSON'