从 Javascript 调用 PUT 方法

Posted

技术标签:

【中文标题】从 Javascript 调用 PUT 方法【英文标题】:Calling PUT method from Javascript 【发布时间】:2015-08-18 02:49:22 【问题描述】:

我正在尝试从 javascript 调用我的 C# Web API,但数据似乎没有正确传递。我拥有的 GET 方法工作得非常好,但我似乎无法让 PUT 按我的意图工作。这是结构:

Javascript:

$.ajax(
    type: "PUT",
    url: "/api/FTP",
    data: "Hello World"
)

C# Web API:

public class FTPController : ApiController

    // GET: api/FTP
    public IHttpActionResult Get()
    
    

    // PUT: api/FTP
    public void Put([FromBody] string data)
    
    

如果我需要提供更多信息,请告诉我。感谢您的帮助。

【问题讨论】:

客户端和服务器应用程序是否在同一个域中?我自己曾经遇到过这个问题,但从来没有机会解决这个问题。不过,这里有一个很好的资源:@​​987654321@ 是的,两者都刚刚从我的本地计算机上运行。就像我说的,GET 工作正常。 HTTP ERROR 405 是“不允许的方法”,因此可能必须将 IIS 或应用程序配置为接受 PUT。这可能是配置错误,您的代码似乎没有任何问题。 @pid 那么我该如何解决这个问题呢? 您可以更改 IIS 设置以允许这样做:***.com/questions/6739124/… 【参考方案1】:

尝试数据:'':'Hello World'

它将生成 =HelloWorld 作为表单数据,这是 [FromBody] 所期望的,我相信在这种情况下。

【讨论】:

【参考方案2】:
$.ajax(
    type: "PUT", //HTTP VERB
    url: "/api/FTP", //URL
    dataType: 'json', //What type of response you expect back from the server
    contentType: 'text/plain', //What type of data you are trying to send
    data: "Hello World"

)

【讨论】:

设置 contentType 实际上会导致 415 错误。 额外的解释会改善你的答案。

以上是关于从 Javascript 调用 PUT 方法的主要内容,如果未能解决你的问题,请参考以下文章

从 Hashmap put() 中获取调用方法名称的列表

MailChimp:为啥带有 javascript 的 PUT 方法返回“使用 PUT 插入或更新列表成员”

在 vue 的父组件中调用子组件的方法

javascript 文件中的 Django ManifestStaticFilesStorage 和导入

Javascript:获取 DELETE 和 PUT 请求

javascript介绍