$.post("./bigData.php", {'username': username}, function(response) {
console.log(response);
var bigUser = response[username]; // attempt one
var bigUser2 = username.response; // attempt two
});
我在response
以上的控制台,如下所示:
{"userSumData":[{"id":"slz1","checked":false},{"id":"slz2","checked":false},{"id":"slz3","checked":false},{"id":"slz4","checked":false}, ....."Map":true}
我想要的结果是这样
{"steven":{"userSumData":[{"id":"slz1","checked":false},{"id":"slz2","checked":false},{"id":"slz3","checked":false},{"id":"slz4","checked":false}, ....."Map":true}}
我在response
之后尝试了点符号和方括号,所有这些都只是清除了数据。
答案 0 :(得分:1)
如果我做对了,我认为这很简单。尝试使用这种...
表示法。如果不是您想要的,请注释掉它:)
const obj = {"userSumData":[{"id":"slz1","checked":false},{"id":"slz2","checked":false},{"id":"slz3","checked":false},{"id":"slz4","checked":false}],"Map":true};
const name = "steven"
const newObj = {[name]: {...obj}}
console.log(newObj)
答案 1 :(得分:1)
首先,我认为您的数据具有JSON格式,要将其转换为Object,必须使用 JSON.parse(response);
您正在尝试更改响应对象,但不要这样做,而是创建一个具有相同属性的新对象。如果我正确理解了您的问题,则可以使用
ES6:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax
let my_object = { inside_object : { steven: { ...response } }}
ES5:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
let my_object = { inside_object : { steven: Object.assign({}, response) }}
答案 2 :(得分:1)
您只是分配给变量,而不是对象属性。您需要创建一个对象,然后将响应分配给该对象的nameVar
属性,例如:
$.post('bigData.php', {username: username}, response=>{
const obj = {[nameVar]:response}; // notice that we are creating an object and assigning it a variable called obj which has a steven property
console.log(obj[nameVar]);
}, 'json');
您当然应该了解异步活动。换句话说,如果要使用该obj
,则必须将其与包含response
的函数正文一起使用。除此之外将无法使用。您始终可以创建一个Promise
结构,但这实际上只是一个语法缩进,减少了同一件事的实现。