Home > OS >  How to get a simple JSON string from response through jQuery
How to get a simple JSON string from response through jQuery

Time:06-17

I have a simple jQuery function that calls a controller action which should return a JSON string. However, I am unable to get the value of the string.

The popup box just says 'undefined'.

I have checked the formatting and also I can see in the console that the JSON gets passed correctly. I am sure that I am missing something completely obvious but cannot find it!

My jQuery function follows

setInterval(function () {
    $.ajax({
        url: "/ImportFile/ImportStatus",
        type: "POST",
        //data: "ID="   teamID,
        dataType: "json", // type of data you're expecting from response
        success: function (json) {
           alert(json.percentcomplete);    
        },
        error: function (error) {}
    });
}, 10000);

and my controller action

[HttpPost]
public ActionResult ImportStatus()
{
    string json = "{\"percentcomplete\": 10}";
    return Json(new { json = json }); 
}

enter image description here

enter image description here

CodePudding user response:

You should deserialize the JSON string and return it as an object.

using System.Text.Json;
using System.Text.Json.Serialization;

[HttpPost]
public ActionResult ImportStatus()
{
    string json = "{\"percentcomplete\": 10}";
    return Json(JsonSerializer.Deserialize<ImportStatusResult>(json)); 
}

public class ImportStatusResult
{
    [JsonPropertyName("percentcomplete")]
    public int PercentComplete { get; set; }
}
  • Related