【问题标题】:XMLHttpRequest "PUT"XMLHttpRequest "PUT"
【发布时间】:2015-09-22 22:26:52
【问题描述】:

我知道如何使用XMLHttpRequest()"GET" 数据,并且还想将XMLHttpRequest() 用于"PUT" 数据到一个文件中。我想"PUT" 的数据只是纯文本。关于如何"GET" 数据有很多,但我做了很多研究,并没有发现太多关于如何"PUT"data 的信息。网上有一些问题试图做类似的事情,但通常是"POST",但我发现没有一个问题可以显示工作模型。有人说对于"POST"ing 或"PUT"ing 数据,它的"Content-type" 必须是"application/x-www-form-urlencoded",而不是"text/plain"。我想同步执行我的请求,而不是使用 Node.js。据我发现,这(下)似乎是"PUT" 数据的方式,但不起作用。

数据应该如何"PUT"使用XMLHttpRequest()

var string = encodeURIComponent("Text String!");
var req = new XMLHttpRequest();
req.open("PUT", "example/data.txt", false);
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
req.setRequestHeader("Content-length", string.length);
req.setRequestHeader("Connection", "close");
req.send(string);

我尝试将"text/plain" 用作"Content-type",但浏览器控制台在我要替换的资源中显示“语法错误”,或者如果资源为空白则告诉我“未找到元素”。

【问题讨论】:

  • 您尝试过使用 curl 或 fiddler 放置吗?您的端点是否配置了 PUT
  • 尝试异步请求。 Sync XHR 已被弃用,并且可能会在非常规请求(CORS、PUT 等)上引发异常。另外,您不需要设置Content-length,浏览器会自动为您设置。
  • @Bergi,我尝试了一个异步请求并注释掉了Content-length,但这会在控制台中返回与同步请求相同的结果,并且"PUT"所作用的资源没有变化.
  • 我被困在这个声明中 - the browser console gives me a "syntax error" in the resource I want to replace - 我一辈子都无法理解你在这里想说什么。你能发布确切的浏览器控制台消息吗
  • @JaromandaX,浏览器 (Firefox) 准确地说是"syntax error data.txt:1:1",而data.txt 是我向"PUT" 请求的文件。 data.txt 没有任何内容。这是data.txt 包含文本的时候。如果data.txt 为空,Firefox 会准确地说,"no element found data.txt:1:1"

标签: javascript http browser xmlhttprequest put


【解决方案1】:

PUT 创建或替换资源。因此,Content-Type 标头字段应包含您要发送的表示的内容类型。更多详情请见section 4.3.4 of RFC 7231

【讨论】:

  • 我知道“PUT”创建或替换了一个资源并尝试将“text/plain”作为“Content-type”,但是浏览器控制台在我想要的资源中给出了一个语法错误如果资源为空白,则替换或告诉我找不到元素。
猜你喜欢
  • 2016-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-30
  • 2023-03-06
  • 2017-05-30
相关资源
最近更新 更多