Ayesha
Ayesha

Reputation: 905

Manipulate ajax response

I have a ajax post method. I get an object from the backend

$.ajax({
        type: "POST",
        url: URL_one,
        data: submitData
}).then(function (response) {
       console.log("Ajax response", response);
   });

and when i do a console.log(response); inside the post method, i see the following data.

>Object{Info:Array[200]}
      >Info:Array[200]
                >[0-99]  
                      >0:Object
                          name:'Ashley'
                          on_pay: true
                          valid:"0"
                >[100-199]

So each array has objects like one mentioned above with name, on_pay and valid. I want to do the following Since all on_pay values are true in my case, i need to convert it to false. Also valid has string of 0. I need to put all values as blank instead of 0.

Is it possible to do ?? Can someone please shed some light on these.

Upvotes: 0

Views: 265

Answers (2)

zero298
zero298

Reputation: 26878

If I'm understanding your question correctly, response is an array of items. You want to keep those items intact, but turn the on_pay property false and valid to an empty string.

You can use Array::map() to transform each item.

/*jslint node:true*/

"use strict";

// I am assuming your response looks something like this
var response = {
    Info: [
        {
            name: "Ashley",
            on_pay: true,
            valid: "0"
        },
        {
            name: "Jim",
            on_pay: true,
            valid: "0"
        },
        {
            name: "John",
            on_pay: true,
            valid: "0"
        }
    ]
};

// This will produce a new variable that will hold the transformed Info array
var fixedResponseInfo = response.Info.map(function (item) {
    item.on_pay = false;
    item.valid = "";
    return item;
});

// This will edit the response.Info array in place
response.Info.forEach(function (item) {
    item.on_pay = false;
    item.valid = "";
});

console.log(fixedResponseInfo);
console.log(response);

This will keep your original response variable and produce a new variable fixedResponseInfo that contains the transformed array. If you don't care whether data in response is changed, you can use Array::forEach() to iterate instead.

Upvotes: 1

leo.fcx
leo.fcx

Reputation: 6467

Considering the JSON structure that you show, following should work to change the on_pay value:

response.Info.forEach(function(item){
    item.on_pay = false;
});

Upvotes: 2

Related Questions