5

I am new to Jquery, Ajax and JSON. I am facing issue with the parsing of Json data. I have been through many questions on stackoverflow

Parsing JSON objects for HTML table

Access / process (nested) objects, arrays or JSON

Parse JSON in JavaScript?

How could I parse through this JSON object in JQuery?

and many more...

Still I am not able to parse the Json data.

My Jquery Looks like :

$.ajax({
  /* type : "POST", */
  url : "launchapptest",
  /* contentType: "application/json; charset=utf-8", */
  data : "processDateInput="+processDate,
  dataType : "json",
  async: true,
  success : function(result) {
    var od = JSON.stringify(result) ;
    var obj = JSON.parse(od);

    console.log(obj.od);
    console.log(obj.od.percentageCompleted);

    console.log(od);
    $.each(JSON.parse(od), function(idx, obj) {
      console.log(obj.tagName);
    });         
  }
});

I have tried all the combinations to parse this data, but the js console print as "undefined"

I am able to print the json object as :

{
  "od": [
    {
      "dateProcessed": [
        "09/11/2014",
        "10/11/2014",
        "11/11/2014",
        "12/11/2014"
      ],
      "percentageCompleted": 25,
      "processRunning": 0,
      "remainingTime": 0,
      "successBatchCount": 0,
      "totalBatchCount": 0
    }
  ],
  "processDateInput": "12/11/2014"
}

Please help me how can I fetch dateProcessed array and percentage complete.

1
  • when I am trying for each loop, the lop is running twice even though there is only onw record... please help Commented Nov 12, 2014 at 11:28

4 Answers 4

6

Try this code.

$.ajax({
    /* type : "POST", */
    url: "launchapptest",
    /* contentType: "application/json; charset=utf-8", */
    data: "processDateInput=" + processDate,
    dataType: "json",
    async: true,
    success: function (result) {
        var od = JSON.stringify(result);
        var obj = JSON.parse(od);

        $.each(obj, function (index, value) {
            console.log(obj[index][0].percentageCompleted);
            console.log(obj[index][0].processRunning);
            console.log(obj[index][0].remainingTime);
            console.log(obj[index][0].successBatchCount);
            console.log(obj[index][0].totalBatchCount);
            console.log(obj.processDateInput);
            $.each(obj[index][0].dateProcessed, function (ind, val) {
                console.log(val);
            })
        });

    }
});
Sign up to request clarification or add additional context in comments.

1 Comment

Console Output.... 25 Dashboard.jsp:127 0 Dashboard.jsp:128 0 Dashboard.jsp:129 0 Dashboard.jsp:130 0 Dashboard.jsp:131 12/11/2014 Dashboard.jsp:132 09/11/2014 Dashboard.jsp:134 10/11/2014 Dashboard.jsp:134 11/11/2014 Dashboard.jsp:134 12/11/2014 Dashboard.jsp:134 null Dashboard.jsp:134 null Dashboard.jsp:134 null Dashboard.jsp:134 null Dashboard.jsp:134 null Dashboard.jsp:134 undefined Dashboard.jsp:127 undefined Dashboard.jsp:128 undefined Dashboard.jsp:129 undefined Dashboard.jsp:130 undefined Dashboard.jsp:130
3

When you specify the dataType as JSON, jQuery will automatically parse it for you. Parsing it again as you are (multiple times, even) will cause issues. Try this:

success: function(result) {
    console.log(result.od);
    console.log(result.od[0].percentageCompleted);
}

I'm not entirely sure what your $.each loop is trying to do as there is no tagName property in your object.

Comments

0

What is the is the return data of your AJAX call

is like this then

{
    "od": [
        {
            "dateProcessed": [
                "09/11/2014",
                "09/12/2014"
            ],
            "percentageCompleted": 25,
            "processRunning": 0,
            "successBatchCount": 0,
            "totalBatchCount": 0
        }
    ],
    "processDateInput": "12/11/2014"
}

you can parse it like this

var json = JSON.parse(result);
            var od = json['od'];
            var processDateInput = json['processDateInput'];

            $.each(od, function(index, value){
                console.log(value, index);
            });

hope it would work on you.

Comments

0

no need of parsing it because you have already mentioned it as json you can simply do like this:

                 success: function(result) {
    console.log(result.od);
    console.log(result.od[0].percentageCompleted);
console.log(od);
    $.each(result, function(idx, obj) {
     console.log(obj[0].dateProcessed);
    });         
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.