用动态文件名制作新的要点?

时间:2014-12-01 01:14:10

标签: javascript greasemonkey github-api gist

我正在尝试使用下面的代码创建一个新的要点(一切正常,除非我尝试使文件名动态。除了文件名之外,其他所有变量替换都有效。我无法弄清楚它为什么会破坏。

var fn = "textfile.txt";
function createGist(token,content,description,shopName,filename){
    $.ajax({ 
        url: 'https://api.github.com/gists',
        type: 'POST',
        beforeSend: function(xhr) { 
            xhr.setRequestHeader("Authorization", "token " + token); 
        },
        data: JSON.stringify({"description": description,"public": false,"files": {fn: {"content": content }}})
    }).done(function(response) {
        console.log(response);
        GM_setValue(shopName,response.id);
    });
}

文件名变量唯一不起作用的部分(也就是用实际的字符串代替它)

1 个答案:

答案 0 :(得分:1)

假设fn应该是文件名。您需要替换:

"files": {fn: {"content": content }}}

"files": files

,其中

var files = {};
files[filename] = {"content": content};

因为对象文字中的键不能是变量的值。在旧代码中,文件名始终为fn

这里需要澄清的是包含建议更改的整个代码:

var fn = "textfile.txt";
function createGist(token,content,description,shopName,filename){
    var files = {};
    files[filename] = {"content": content};
    $.ajax({ 
        url: 'https://api.github.com/gists',
        type: 'POST',
        beforeSend: function(xhr) { 
            xhr.setRequestHeader("Authorization", "token " + token); 
        },
        data: JSON.stringify({"description": description,"public": false,"files": files})
    }).done(function(response) {
        console.log(response);
        GM_setValue(shopName,response.id);
    });
}