所以目前我正在使用emberjs,我尝试用变量的这种方式设置请求的标头:
Ember.$.ajax({
type: "GET",
url: this.requestEndpoint,
headers: {`${headerName}`: headerValue}
})
但是问题在于,在
headers: {`${headerName}`: headerValue}
中,`是意外的标记。您有解决该问题的想法吗?
编辑:只是要确保headerName和headerValue是变量。
var name = headerName;
var val = headerValue;
var obj = {
headerName:name,
headerValue:val
};
Ember.$.ajax({
type: "GET",
url: this.requestEndpoint,
headers: {obj.headerName: obj.headerValue}
})
得到错误:
Build error
client/controllers/workouts.js (in /opt/client/tmp/babel-input_base_path-LBKF5l2Q.tmp/0)
client/controllers/workouts.js: Unexpected token (19:22)
SyntaxError: client/controllers/workouts.js: Unexpected token (19:22)
17 | type: "GET",
18 | url: this.requestEndpoint,
> 19 | headers: {obj.headerName: obj.headerValue}
| ^
20 | }).success(function(data) {
21 | console.log(JSON.stringify(data));
22 | return data;
at Parser.pp.raise (/opt/client/node_modules/ember-cli-babel/node_modules/broccoli-babel-transpiler/node_modules/babel-core/node_modules/babylon/lib/parser/location.js:24:13)
at Parser.pp.unexpected (/opt/client/node_modules/ember-cli-babel/node_modules/broccoli-babel-transpiler/node_modules/babel-core/node_modules/babylon/lib/parser/util.js:82:8)
at Parser.pp.expect (/opt/client/node_modules/ember-cli-babel/node_modules/broccoli-babel-transpiler/node_modules/babel-core/node_modules/babylon/lib/parser/util.js:76:33)
at Parser.pp.parseObj (/opt/client/node_modules/ember-cli-babel/node_modules/broccoli-babel-transpiler/node_modules/babel-core/node_modules/babylon/lib/parser/expression.js:596:12)
at Parser.pp.parseExprAtom (/opt/client/node_modules/ember-cli-babel/node_modules/broccoli-babel-transpiler/node_modules/babel-core/node_modules/babylon/lib/parser/expression.js:392:19)
at Parser.pp.parseExprSubscripts (/opt/client/node_modules/ember-cli-babel/node_modules/broccoli-babel-transpiler/node_modules/babel-core/node_modules/babylon/lib/parser/expression.js:236:19)
at Parser.pp.parseMaybeUnary (/opt/client/node_modules/ember-cli-babel/node_modules/broccoli-babel-transpiler/node_modules/babel-core/node_modules/babylon/lib/parser/expression.js:217:19)
at Parser.pp.parseExprOps (/opt/client/node_modules/ember-cli-babel/node_modules/broccoli-babel-transpiler/node_modules/babel-core/node_modules/babylon/lib/parser/expression.js:163:19)
at Parser.pp.parseMaybeConditional (/opt/client/node_modules/ember-cli-babel/node_modules/broccoli-babel-transpiler/node_modules/babel-core/node_modules/babylon/lib/parser/expression.js:145:19)
at Parser.pp.parseMaybeAssign (/opt/client/node_modules/ember-cli-babel/node_modules/broccoli-babel-transpiler/node_modules/babel-core/node_modules/babylon/lib/parser/expression.js:112:19)
最佳答案
这里`
`${headerName}`
back ticks用于ES6标准中的字符串插值,因此,您必须使用js编译器(如babel)将js6代码向下编译为ES5,并在今天的浏览器中运行,然后在浏览器中即可使用ES6使用,但到目前为止,我们必须进行编译以运行它。
根据您的评论,我建议您可以将其存储在对象中:
var name = headerName;
var val = headerValue;
var obj = {};
obj[name] = val; // outputs {Auth:Authstring}
然后可以在ajax中引用它:
Ember.$.ajax({
type: "GET",
url: this.requestEndpoint,
headers: {obj.headerName: obj.headerValue} // <---use it here then
})
var headerName = "Ember";
var headerValue = "JS Framework";
var obj = {
headerName: headerName, // you have to store the string value in a var as above.
headerValue: headerValue
};
document.querySelector('pre').innerHTML = JSON.stringify(obj);
<pre></pre>
关于javascript - jQuery Ajax:变量作为标题键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33935916/