现在我陷入一个问题。我想这是非常基本的事情。但是经过数小时的研究,如果有人可以给我快速建议,那就太好了。 所以我想从我的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);
}
对我来说很好。
答案 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