所以目前我正在使用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/

10-09 16:08
查看更多