javascript - 将 JSON 字符串发布到 WEB API

标签 javascript json asp.net-web-api2

我有一个 ASP.NET WEB-API 2 应用程序需要一个 POST 方法来接受 JOSN string 具有来自 javascript 的未知结构。
我启用了 corsGET 方法工作正常,但是当从客户端发送 JSON 时,api 的方法参数总是 null.
这是我的 api 方法:

//parameters i tried:
//[FromBody]string model
//[FromBody]dynamic model
//dynamic model
public HttpResponseMessage Post(string model)
{
    return new HttpResponseMessage()
    {
        Content = new StringContent("POST: Test message: " + model)
    };
}

和我的客户端方法:

function sendRequest()
{
    var Test = {"Name":"some name"};
    var method = $('#method').val();

    $.ajax({
        type: method,
        url: serviceUrl,
        contentType: 'application/json; charset=utf-8',
        data: JSON.stringify(Test)               
    }).done(function (data)
    {
        $('#value1').text(data);
    }).error(function (jqXHR, textStatus, errorThrown)
    {
        $('#value1').text(jqXHR.responseText || textStatus);
    });
}

所以问题是我如何从 javascript 发布未知的 JSON 字符串 并在我的 api 方法中接受它作为字符串?

最佳答案

我编辑了你的代码,它运行良好。

[FromBody] 属性指定操作参数仅来自传入 HTTPRequestMessage 的实体主体。

public class TestApiController : ApiController
    {
        // POST api/<controller>
        [HttpPost]
        public HttpResponseMessage Post([FromBody]string value)
        {
            return new HttpResponseMessage()
            {
                Content = new StringContent("POST: Test message: " + value)
            };
        }

    }

function sendRequest() {
    var Test = { "Name": "some name" };

    $.ajax({
        type: "POST",
        url: "api/TestApi",
        data: { '': JSON.stringify(Test) }
    }).done(function (data) {
        alert(data);
    }).error(function (jqXHR, textStatus, errorThrown) {
        alert(jqXHR.responseText || textStatus);
    });
}

关于javascript - 将 JSON 字符串发布到 WEB API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36567136/

相关文章:

c# - 多个 Controller 上的属性路由匹配请求的 url

javascript - React 高阶组件向渲染的 JSX 添加自定义属性

javascript - 第 3 方添加到日历下拉列表未显示在子页面中

javascript - 关闭滚动覆盖

javascript - 以 JSON 或 var 形式传递对象(拖放)

python - 如何在 Python 中表示字节 json 字符串

JSON 数据未传递到 tableView Cell

azure - 使用合作伙伴组织的 Azure AD 角色

asp.net-mvc-5 - Visual Studio 2012 的 ASP.NET MVC5 支持

javascript - 单击 href(带有类)后,启动自定义对话框(css 自定义)