我正在制作一个Chrome Extension
,它可以帮助我导入.csv文件并将其添加为Confluence表。
我已经用Java(没有扩展名)对此进行了编码,并且所有请求似乎都正常,但是我现在必须使用JavaScript进行扩展(JavaScript和Chrome扩展名对我来说都是新的。)
我已将.csv文件转换为数组,然后转换为文档元素。如果我用console.log表,一切都会很好。
但是,我想通过发出PUT
请求,用这个新表替换Confluence中的现有表。
发出请求时,它返回STATUS 405
。
我读到STATUS 405
的意思是Method Not Allowed
,也许一个POST
的请求会更好,但是如果我发出POST请求,则会得到STATUS 415
不受支持的媒体输入
//my attempt to make a PUT XMLHTTPRequest
var url = 'some-url';
basic_auth = 'Basic' + btoa(user_credentials);
var newTable = createTable(tableArray);
var xmlHttpPUT = new XMLHttpRequest();
xmlHttpPUT.withCredentials = true;
xmlHttpPUT.open('PUT', url, true); // true : asynchrone false: synchrone
xmlHttpPUT.setRequestHeader("Content-Type", "text/html; charset=utf-8");
xmlHttpPUT.setRequestHeader("Accept", "text/html; charset=utf-8");
xmlHttpPUT.setRequestHeader("Authorization", basic_auth);
xmlHttpPUT.responseType = "text";
xmlHttpPUT.onreadystatechange = function(){
console.log(xmlHttpPUT.responseText);
}
xmlHttpPUT.send(newTable);
我希望能够用新表替换旧表。 GET请求工作正常。
我的PUT请求是否错误?
此外,这就是我创建表的方式(tableArray是具有所有行及其单元格的数组)
function createTable(tableArray ){
var newTable = document.createElement('table');
var tableBody = document.createElement('tbody');
tableArray.forEach(function(rowData){
var row = document.createElement('tr');
rowData.forEach(function(cellData){
var cell = document.createElement('td');
cell.appendChild(document.createTextNode(cellData));
row.appendChild(cell);
});
tableBody.appendChild(row);
});
newTable.appendChild(tableBody);
return newTable;
}