Javascript 操纵ajax响应

Javascript 操纵ajax响应,javascript,jquery,arrays,ajax,object,Javascript,Jquery,Arrays,Ajax,Object,我有一个ajax post方法。我从后端获取一个对象 $.ajax({ type: "POST", url: URL_one, data: submitData }).then(function (response) { console.log("Ajax response", response); }); 当我执行console.log(响应)时;在post方法中,我看到了以下数据 >Object{Info:Array

我有一个ajax post方法。我从后端获取一个对象

$.ajax({
        type: "POST",
        url: URL_one,
        data: submitData
}).then(function (response) {
       console.log("Ajax response", response);
   });
当我执行console.log(响应)时;在post方法中,我看到了以下数据

>Object{Info:Array[200]}
      >Info:Array[200]
                >[0-99]  
                      >0:Object
                          name:'Ashley'
                          on_pay: true
                          valid:"0"
                >[100-199]
因此,每个数组都有上面提到的对象,名称为on_pay且有效。我想做以下几件事 因为在我的例子中,所有on_pay值都是true,所以我需要将其转换为false。同样有效的字符串为0。我需要将所有值都设置为空,而不是0


有可能吗??有人能解释一下这些吗

如果我正确理解了您的问题,
响应
是一组项目。您希望保持这些项目完好无损,但请将pay上的
属性
false
valid
设置为空字符串

可以使用转换每个项目

/*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);

这将保留原始响应变量,并生成一个包含转换数组的新变量
fixedResponseInfo
。如果您不关心
响应
中的数据是否更改,您可以使用来代替迭代。

如果我正确理解您的问题,
响应
是一个项目数组。您希望保持这些项目完好无损,但请将pay
上的
属性
false
valid
设置为空字符串

可以使用转换每个项目

/*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);

这将保留原始响应变量,并生成一个包含转换数组的新变量
fixedResponseInfo
。如果您不关心
响应中的数据是否更改,您可以使用来代替迭代。

考虑到您显示的JSON结构,以下内容可以用来更改付费
值:

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

考虑到您所展示的JSON结构,以下内容应该可以用来更改on_pay
值:

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

发布JSON响应。响应的格式是JSON还是XML?您可以在客户端对其进行转换,但如果您可以修改服务器代码以发送所需的响应,则会更好。@Dudevan-console.log(response)不是相同的吗?@Ayesha-不是。发布JSON响应。响应的格式是JSON还是XML?您可以在客户端对其进行转换,但如果您可以修改服务器代码以发送所需的响应,则会更好。@Dudevan-控制台的日志(响应)不是相同的吗?@Ayesha-不是。Ayesha我注意到了
map
forEach
之间的差异。如果您不关心响应中的数据是否发生变化,您可以使用
forEach
,正如leo.fcx在回答中所说的那样。奇怪的是,响应和fixedResponse都给出了相同的结果。i、 e.两个输出中的item.on_pay和item.value都有新值。@Ayesha i注意到
map
forEach
之间的差异。如果您不关心响应中的数据是否发生变化,您可以使用
forEach
,正如leo.fcx在回答中所说的那样。奇怪的是,响应和fixedResponse都给出了相同的结果。i、 e.在两个输出中,新值都附加到item.on_pay和item.values。@leo.fcx-我希望我也选择您的答案。谢谢你的提示help@leo.fcx-我希望我也能选择你的答案。谢谢你的及时帮助