【问题标题】:Manipulate ajax response操纵ajax响应
【发布时间】:2016-01-29 21:31:05
【问题描述】:

我有一个 ajax 发布方法。我从后端得到一个对象

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

当我做一个 console.log(response);在 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。

有可能吗?有人可以阐明这些。

【问题讨论】:

  • 发布您的 JSON 响应。
  • 响应是JSON还是XML之类的格式?您可以在客户端转换它,但如果您可以修改服务器代码以发送您想要的响应会更好。
  • @Dudevan-console.log(response) 不一样吗?
  • @Ayesha - 不。不是。

标签: javascript jquery arrays ajax object


【解决方案1】:

考虑到您显示的 JSON 结构,以下应该可以更改 on_pay 值:

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

【讨论】:

  • @leo.fcx- 我希望我也选择你的答案。感谢您的及时帮助
【解决方案2】:

如果我正确理解您的问题,response 是一个项目数组。您希望保持这些项目不变,但将 on_pay 属性 falsevalid 设置为空字符串。

您可以使用Array::map() 来转换每个项目。

/*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,其中包含转换后的数组。如果不关心response中的数据是否发生变化,可以使用Array::forEach()进行迭代。

【讨论】:

  • @Ayesha 我注意到mapforEach 之间的区别。如果您不关心响应中的数据是否发生变化,您可以使用forEach,正如 leo.fcx 在他的回答中所说的那样。
  • 奇怪的是, response 和 fixedResponse 都给出了相同的结果。即在两个输出中都覆盖了 item.on_pay 和 item.values 的新值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-01
  • 2021-09-01
  • 2016-03-23
  • 2021-12-15
  • 2021-03-20
相关资源
最近更新 更多