我无法弄清楚:-(我的客户正在做ajax httppost,我需要发送以下内容:
private doSaveQuery(queryName: string): void {
const info = {};
info['userName'] = 'admin';
info['userQueryName'] = queryName;
...
当它被字符串化时,它变成这样:
{"userName":"admin",
"userQueryName":{"queryName":"MyName"}
}
为什么它使用我的变量名“ queryName”并将其作为键添加到我的值中???
我该怎么做?
{"userName":"admin",
"userQueryName":"MyName"
}
我知道这很简单,所以请原谅我的无知:-)
谢谢!
答案 0 :(得分:1)
在编码对象时,看起来queryName
实际上是看起来像{queryName: 'MyName'}
的对象。
要解决此问题,您应确保queryName
只是字符串MyName
。
info['userQueryName'] = 'MyName'
按顺序,queryName
不是您想的那样。
您当前实施的示例:
const queryName = {queryName: "MyName"}
const info = {
userName: "admin",
userQueryName: queryName
}
console.log(JSON.stringify(info))
您应该将queryName
更改为仅字符串:
const queryName = "MyName"
const info = {
userName: "admin",
userQueryName: queryName
}
console.log(JSON.stringify(info))
如果您不能这样做,则可以从属性中构建信息:
const queryName = {queryName: "MyName"}
const info = {
userName: "admin",
userQueryName: queryName.queryName
}
console.log(JSON.stringify(info))
答案 1 :(得分:1)
您已指定为类型字符串,而打字稿可能应该已经发现您没有传递字符串。因为如果您这样做,它将做您想要的。 但是可能发生这样的事情。
function getMyJSON(queryName) {
const info = {};
info['userName'] = 'admin';
info['userQueryName'] = queryName;
return info;
}
const a = {queryName:"name"};
console.log(JSON.stringify(getMyJSON(a)));