1

我目前在我的解决方案中有两个 Web 角色,一个用于主 Web 应用程序,另一个我想充当 Web 应用程序和移动应用程序的 API。

它们都彼此独立工作,但我正在努力将数据从 Web 应用程序角色的视图发布到 API 角色的 API 控制器。

这是 API 控制器中的方法:

public void Post([FromBody]string value)
{
    var post = (Post)JsonConvert.DeserializeObject(value, typeof(Post));
    AddPost(post);
}

这是我试图发布的视图中的 JavaScript:

<script>
    $(function () {
        var onPost = function () {
            $.post("http://localhost:8081/api/Post",
                {
                    "value": $('#postForm').serialize()
                }
            ).success(function () {
                alert("SUCCESS");
            }).fail(function () {
                alert("FAILURE");
            });
        };
    });
</script>

编辑:

我没有收到错误,也没有调用任何一个警报函数。但是,单击触发此事件的按钮时,URL 将更改为包含已序列化的表单条目。

4

1 回答 1

0

最好在您的 Web 应用程序中从服务器端(例如 MVC 控制器)进行 API 调用。您可以包含安全密钥和您不想向他人公开的其他内容。当您直接从 javascript 对另一个子域或 url 进行 API 调用时,您正在创建跨域 ajax 请求。

在您的 javascript 中,您将对 Web 应用程序中的控制器操作进行 ajax 调用。Web 应用程序将调用它正在与之交谈的任何服务。

您还可以使用 POST/GET/PUt/DELETE 请求从提琴手测试您的 API。

如果您想直接从不同子域下的 javascript 和主机 web 角色调用,您需要发出 CORS 请求:http ://www.html5rocks.com/en/tutorials/cors/ 。您还可以查看这个相关问题:在 Azure 中与 MVC 项目一起运行 WebApi

于 2013-08-28T11:16:01.150 回答