Ajax.BeginForm,调用操作,返回 JSON,如何在 OnSuccess JS 函数中访问 JSON 对象?
Posted
技术标签:
【中文标题】Ajax.BeginForm,调用操作,返回 JSON,如何在 OnSuccess JS 函数中访问 JSON 对象?【英文标题】:Ajax.BeginForm, Calls Action, Returns JSON, How do I access JSON object in my OnSuccess JS Function? 【发布时间】:2011-04-30 13:26:43 【问题描述】: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 的任何想法?
【问题讨论】:
【参考方案1】:function OnSuccess(e) //function CouponSubmitted(data) in the question
var json = e.get_response().get_object();
alert(json.success);
这就是 AJAX.BeginForm OnSuccess 回调希望您执行的操作以获取 JSON。
希望我在这个可笑的记录“功能”下为其他人节省了一些时间?
【讨论】:
似乎带有不显眼的 ajax 的 MVC3 使用了不同的方法。 OnSuccess 的第一个参数是数据对象。CouponSubmitted(data, status, xhr)
in asp.net-mvc3。
@Joel - 谢谢。这在任何地方都有记录吗? ASP.NET MVC 似乎非常无证。
@Ek0nomik:通过快速 google 搜索 (2011-09) 找不到关于 javascript 回调的任何文档,但请参阅我对 two out of three callback signatures 的链接答案。发现他们在阅读~/Scripts/jquery.unobtrusive-ajax.js
,这给了你真正的独家新闻:)
使用MVC v4.0.30319,不用get_response()就可以使用get_objet()获取【参考方案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 我假设它没有参数来接收数据。
【讨论】:
谢谢谢谢谢谢谢谢。我花了很长时间才知道如何做到这一点。我只需要那个 OnSuccess 关于 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");
【讨论】:
以上是关于Ajax.BeginForm,调用操作,返回 JSON,如何在 OnSuccess JS 函数中访问 JSON 对象?的主要内容,如果未能解决你的问题,请参考以下文章
form表单和ajax表单提交(Html.BeginForm()Ajax.BeginForm())的差别
通过 ActionLink 提交 Ajax.BeginForm
在 MVC3 中的 Ajax.Beginform 中调用自定义确认对话框
jQuery.Ajax与Ajax.beginform一起使用不引人注目的JavaScript
MVC 5 Ajax.BeginForm Submit按钮调用当前页面而不是指定的Controller和Action的URL