Web API调用无效

时间:2014-02-01 16:14:22

标签: asp.net-mvc-4 asp.net-web-api

这是我第一次在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>

但我收到警告框显示错误。任何人都可以帮助我吗?

2 个答案:

答案 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”