How to use Ajax.BeginForm MVC helper with JSON result?

前端 未结 5 1968
清歌不尽
清歌不尽 2020-11-30 02:17

I\'m trying to use the ASP.NET MVC Ajax.BeginForm helper but don\'t want to use the existing content insertion options when the call completes. Instead, I want to use a cust

相关标签:
5条回答
  • 2020-11-30 02:28

    Make sure you have included MicrosoftAjax.js and MicrosoftMvcAjax.js. Then use the following calls on the returned context to get a json object out of the return.

    var json = context.get_data();
    var data = Sys.Serialization.JavaScriptSerializer.deserialize(json);
    
    0 讨论(0)
  • 2020-11-30 02:39

    I use:

        function onTestComplete(data, status, xhr) {
           var data2 = JSON.parse(data.responseText);
           //data2 is your object
        }
    
    0 讨论(0)
  • 2020-11-30 02:48

    Try this:

    var json_data = content.get_response().get_object();
    

    this will give you result in JSON format and you can use json_data[0] to get the first record

    0 讨论(0)
  • 2020-11-30 02:51

    You can use OnFailure and OnSuccess instead of OnComplete; OnSuccess gives you the data as a proper JSON object. You can find the callback method signatures burried in ~/Scripts/jquery.unobtrusive-ajax.min.js which you should load on your page.

    In your Ajax.BeginForm:

    new AjaxOptions
        {
            OnFailure = "onTestFailure",
            OnSuccess = "onTestSuccess"
        }
    

    Script block:

    <script>
    //<![CDATA[
    
        function onTestFailure(xhr, status, error) {
    
            console.log("Ajax form submission", "onTestFailure");
            console.log("xhr", xhr);
            console.log("status", status);
            console.log("error", error);
    
            // TODO: make me pretty
            alert(error);
        }
    
        function onTestSuccess(data, status, xhr) {
    
            console.log("Ajax form submission", "onTestSuccess");
            console.log("data", data);
            console.log("status", status);
            console.log("xhr", xhr);
    
            // Here's where you use the JSON object
            //doSomethingUseful(data);
        }
    
    //]]>
    </script>
    

    These signatures match success and error callbacks in $.ajax(...), which might not be such a surprise after all.

    This was tested using asp.net-mvc-3 with jquery 1.6.3 and 1.7.2.

    0 讨论(0)
  • 2020-11-30 02:53

    Try using the below code:

    <script type='text/javascript'>
        function onTestComplete(content) {
            var result = eval( '(' + content.get_data() + ')' );
            alert(result.UppercaseName);
        }
    </script>
    
    0 讨论(0)
提交回复
热议问题