【问题标题】:Cannot get parameter when sending a post request发送 post 请求时无法获取参数
【发布时间】:2015-05-12 21:10:58
【问题描述】:

我正在使用属性路由。我无法从 HTTP 正文获取参数,谁能告诉我这里出了什么问题。我的 ConnectionID 类有一个名为 CValue 的属性。

$('#btn').click(function () {
    $.ajax({
        type: "POST",
        url: "http://localhost:49289/api/Resolver/StartRun",
        data: { "CValue": connectionID },
        success: success,
        dataType: "json"
    });
});



[Route("api/Resolver/StartRun")]
[HttpPost]
public async Task<string> GetStatus([FromBody]ConnectionID connectionID)
{
}

【问题讨论】:

  • 服务器对请求的响应说明了什么?
  • @wahwahwah http code 200,一切正常,就是无法获取参数值...
  • 您的ConnectionID 模型是否有一个名为CValue 的属性?
  • @wahwahwah 是的,它有。

标签: javascript asp.net ajax asp.net-web-api asp.net-web-api-routing


【解决方案1】:

如果您将路径更改为相对路径,则您正在使用需要 CORS 的路径:

url: "/api/Resolver/StartRun",

应该没问题,这是我用来演示的简单示例。

JavaScript

<script>
        $.ajax({
            type: "POST",
            url: "/api/Resolver/StartRun",
            data: { "CValue": "123" },
            success: new function(){},
            dataType: "json
           });
</script>

控制器

    [Route("api/Resolver/StartRun")]
    [HttpPost]
    public async Task<string> GetStatus([FromBody]ConnectionID connectionID)
    {
        return "test";
    }

public class ConnectionID
{
    public string CValue { get; set; }
}

屏幕截图

对于正在填充的参数,您必须相信我的话,在 Mac 上,我不记得如何获取打印屏幕(使用过的截图工具),但如果您使用上面的方法运行它,您会看到。 :)

【讨论】:

  • 我通过说 app.UseCors(CorsOptions.AllowAll) 启用了 Cors 选项。从我读过的内容和你的演示来看,我真的觉得代码是正确的。可能是我使用了错误版本的路由属性程序集……非常感谢。
  • @user3033715 没问题,我会尝试使用干净的解决方案。开箱即用的默认设置对我有用。
猜你喜欢
  • 2018-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-17
  • 1970-01-01
  • 2016-10-16
  • 2020-12-29
相关资源
最近更新 更多