【问题标题】:Ajax.BeginForm, Calls Action, Returns JSON, How do I access JSON object in my OnSuccess JS Function?Ajax.BeginForm,调用操作,返回 JSON,如何在 OnSuccess JS 函数中访问 JSON 对象?
【发布时间】: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 的任何想法?

【问题讨论】:

    标签: asp.net-mvc json jquery


    【解决方案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 的第一个参数是数据对象。
    • @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");  
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-23
        • 2014-11-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多