尝试使用JavaScript发出PUT请求时出现错误405

时间:2019-08-28 08:57:35

标签: javascript google-chrome-extension xmlhttprequest put

我正在制作一个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;
}

0 个答案:

没有答案