【问题标题】:Calling PUT method from Javascript从 Javascript 调用 PUT 方法
【发布时间】: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 设置以允许这样做:stackoverflow.com/questions/6739124/…

标签: javascript c# asp.net-web-api put


【解决方案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 错误。
    • 额外的解释会改善你的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 1970-01-01
    • 1970-01-01
    • 2014-05-18
    • 2012-02-07
    • 2012-05-07
    • 2015-05-13
    相关资源
    最近更新 更多