使用POST

时间:2018-08-09 09:27:44

标签: javascript c# ajax rest

现在我陷入一个问题。我想这是非常基本的事情。但是经过数小时的研究,如果有人可以给我快速建议,那就太好了。 所以我想从我的api(C#)调用我的PUT方法

    [HttpPost]
    public String Post(String id)
    {

        return id;
    }

当我按下一个按钮时被称为。按钮功能是这样的:

<script>
function sendData() {
    $.ajax({
        url: '/api/values',
        type: 'POST',
        data: {'id':"100014"},
        dataType: 'json',
        contentType: 'application/json',
    });
}

如果我调用GET方法,一切正常。但是尝试调用POST方法只会返回HTTP Post不支持该资源。 我用邮递员测试了该方法。在这里,Post方法有效。 但是我不想将这些数据传递给Url,而是传递给Ajax的数据。

如果有人可以帮助我,那就太好了。

编辑: 我只是尝试了一些东西。我的最终结果是:

        [HttpPost]
    public async Task<IHttpActionResult> Post(int id)
    {
        var rawMessage = await Request.Content.ReadAsStringAsync();
        return Ok(rawMessage);
    }

对我来说很好。

4 个答案:

答案 0 :(得分:0)

问题是找不到您的路由。 试试

     [HttpPost]
     [Route("getValues")]
public String Post(String id)
{

        return id;
    }

您甚至可以在控制器类之前添加:

[RoutePrefix("api/values")]

然后用

调用
url: '/api/values/getValues',

答案 1 :(得分:0)

请检查您是否引用了正确的库。

如果您使用的是System.Web.Mvc,则可能会发生此问题。尝试将其删除并引用System.Web.Http

希望这可以解决您的问题。

答案 2 :(得分:0)

您应该使用Ok()方法包装输出。

将您的returm类型用作IHttpActionResult

 [HttpPost]
    public IHttpActionResult Post(String id)
    {

        return Ok(id);
    }

答案 3 :(得分:-1)

您应该使用JSON.stringify()将JavaScript对象转换为字符串。 您可以像这样修改脚本中的方法。

<script>
function sendData() {
var obj = { id:'100014'};
    $.ajax({
        url: '/api/values',
        type: 'POST',
        data: JSON.stringify(obj),
        dataType: 'json',
        contentType: 'application/json',
        success: function(data) {
            alert(data);
        }
    });
}
</script>

顺便说一句,我看到您的路径不正确。应该是/api/post