使用jQuery post请求调用ASP.Net WebAPI

11

遇到一些问题:

我进行了一个简单的测试,弹出警告框显示文本"test return simple":

jQuery发布:

$.post("http://www.localhost/webapi/api/corkboard/test/", jsonData)
            .done(function(data){
                alert(data);
        });

Asp.Net WebAPI:

[HttpPost]
public string test()
{        
    return "test return simple";
}

但是当我通过添加一个参数来修改WebAPI时:

public string test(string JSONData)
    {
        var jData = Json.Decode(JSONData);
        return "test return: " + jData.Filter;            
    }

我收到了以下错误信息:

"找不到与请求URI 'http://www.localhost/webapi/api/corkboard/test/' 相匹配的HTTP资源。

卡住了,希望能得到任何想法...谢谢!


你使用哪个Web服务器作为后端?具体的技术应该定义如何处理POST方法和作为POST请求传入的数据。这可能不像在你的POST方法处理程序中添加参数那么简单明了。 - amitsaurav
我正在使用 .net WebAPI ... 我试图遵循一些现有的代码,该代码使用相同的架构:jquery post 和 .net webapi ... 但我卡在这个部分... - nanonerd
我不是 .net webapi 的专家,但找到了一篇文章,介绍如何配置 GET、POST 和其他 HTTP 处理程序:http://www.codeproject.com/Articles/549152/Introduction-to-ASP-NET-Web-API - amitsaurav
谢谢Stony。我稍后会有机会看一下...;-) - nanonerd
我尝试通过将jsonData作为URL参数添加到jQuery请求的第一行来更改它,这样做是有效的。但我不想在URL中传递数据。我想我需要清楚地了解客户端如何将数据传递给服务器。这是我的更改:$.post("http://localhost/webapi/api/corkboard/test?JSONData=" + jsonData)。 - nanonerd
无论您如何发布,如果出于某种原因不想创建模型,请从 HttpContext.Current.Request.Form.AllKeys 访问所有已发布的数据或特定键 HttpContext.Current.Request.Form["name"]。请记住,我是这样发布数据的 $.post('url', { name: 'some', id: '123' }) - sairfan
2个回答

15

将你的WebApi方法更改为:

public string test([FromBody]string JSONData)
    {
        var jData = Json.Decode(JSONData);
        return "test return: " + jData.Filter;            
    }

并且您的JQuery:

$.post('http://www.localhost/webapi/api/corkboard/test/', { '': jsonData })
        .done(function(data){
            alert(data);
    });

1
太棒了,这个可行。谢谢。但是,语法真的很奇怪,我不熟悉它...更多细节请参见J. Marley在Encosia.com文章中的帖子。- 干杯! - nanonerd

6

这个链接提供了有价值且解释详细的细节。谢谢。 - Tejasvi Hegde
8
Chrome提示该链接存在恶意软件,只是提醒一下。 - kaelle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接