这是我第一次在MVC 4中使用Web API组件。我刚创建了一个Web API项目来管理人员详细信息。我在Person Controller中编写了一个get函数,并从浏览器中调用它。结果是:
<ArrayOfPerson xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/WebAPITest.Models">
<Person>
<Address>Addr</Address>
<DOB>2013-05-04T00:00:00</DOB>
<ID>1</ID>
<Name>Name</Name>
</Person>
</ArrayOfPerson>
网址为:http://localhost:3802/api/Person
然后我在解决方案中添加了一个新的MVC基础项目,并尝试从视图页面调用Web API。 视图页面中的代码是:
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<script src="~/Scripts/jquery-1.7.1.js"></script>
<script>
$(document).ready(function () {
$.ajax({
url: "http://localhost:3802/api/Person",
type: "Get",
success: function (data) {
for (var i = 0; i < data.length; i++) {
$("<tr></tr><td></td>" + data[i].Name + "</td><td></td>" + data[i].Address + "</td><td></td>" + data[i].DOB + "</td></tr>").appendTo("#tbPerson");
}
},
error: function (msg) { alert("Error"); }
});
});
</script>
<h2>Index</h2>
<table id="tbPerson">
<tr>
<th>Name</th>
<th>Address</th>
<th>DOB</th>
</tr>
</table>
但我收到警告框显示错误。任何人都可以帮助我吗?
答案 0 :(得分:1)
由于您添加了一个新的MVC项目,它将在3802以外的端口中运行。因此,页面URI将类似于http://localhost:<someport>/home/index
。如果此页面中的JavaScript调用API端点的URI({1}},则该请求将成为跨源请求,浏览器不允许该请求。有关详细信息,请查看http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api。 Brock Allen在这个主题上有一篇很棒的MSDN文章 - http://msdn.microsoft.com/en-us/magazine/dn532203.aspx。
答案 1 :(得分:0)
尝试更改url: "http://localhost:3802/api/Person"
至
url:“/ api / Person”