我目前在我的解决方案中有两个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将更改为包括已序列化的表单的条目。
答案 0 :(得分:0)
最好从服务器端进行API调用,例如Web应用程序中的MVC控制器。您可以包含安全密钥以及您不希望向其他人公开的其他内容。当您直接从javascript为另一个子域或URL进行API调用时,您将创建跨域ajax请求。
在您的javascript中,您将在网络应用中对控制器操作进行ajax调用。 Web应用程序将调用它正在与之交谈的任何服务。
您还可以使用POSt / GEt / PUt / DELETE请求从fiddler测试您的API。
如果要直接从不同子域下的javascript和主机Web角色调用,则需要发出CORS请求:http://www.html5rocks.com/en/tutorials/cors/。您还可以查看以下相关问题:Running WebApi alongside MVC project in Azure