无法使用jquery ajax发布到web api控制器操作

时间:2013-06-18 18:50:07

标签: asp.net-web-api

我正在尝试使用mvc4中的web api创建我的第一个REST应用程序。我有一个使用HttpPost动词设置的控制器,但出于某种原因,当我点击链接将xml字符串发布到控制器时,我收到一个错误 - “{”消息“:”没有找到与请求URI匹配的HTTP资源' /api/Apply/ApplyToJob'.","MessageDetail":"在控制器'Apply'上找不到与请求匹配的操作。“}”任何想法我可能做错了什么?这是视图页面......

<a href="javascript:void(0);" id="lnkPost">Post Data</a>

<script type="text/javascript">
    window.onload = function () {
        $("#lnkPost").on("click", function () {

            $.get("/TestResponse.xml", function (d) {
                $.ajax({
                    //contentType: "text/xml",
                    //dataType: "xml",
                    type: "post",
                    url: "/api/Apply/ApplyToJob",
                    data: {
                        "strXml": (new XMLSerializer()).serializeToString(d)
                    },
                    success: function () { console.log('success'); }
                });
            });
        });
    };
</script>

这是控制器。

public class ApplyController : ApiController
{
    [HttpPost]
    [ActionName("ApplyToJob")]
    public string ApplyToJob(string strXml)
    {
        return "success";
    }
}

1 个答案:

答案 0 :(得分:2)

修改动作的参数,如下所示:

public string ApplyToJob([FromBody]string strXml)

这是因为没有这个FromBody属性,字符串参数应该来自Uri。由于您在Uri中没有它,因此操作选择失败。

另外,查看您的客户端代码,您不应该在请求中设置适当的内容类型标题吗?

被修改

您可以将您的javascript修改为如下所示,看看它是否有效:

$.ajax({    contentType: "text/xml",
            dataType: "xml",
            type: "post",
            url: "/api/values",
            data: "your raw xml data here",
            success: function () { console.log('success'); }
        });
相关问题