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的任何想法
答案 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");