Asp.net mvc 4 Web API调用不起作用

Asp.net mvc 4 Web API调用不起作用,asp.net-mvc-4,asp.net-web-api,Asp.net Mvc 4,Asp.net Web Api,这是我第一次在MVC4中使用WebAPI组件。我刚刚创建了一个WebAPI项目来管理个人详细信息。我在Person控制器中编写了一个get函数,并从浏览器中调用它。结果是: <ArrayOfPerson xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/WebAPITest.Models"> <Person>

这是我第一次在MVC4中使用WebAPI组件。我刚刚创建了一个WebAPI项目来管理个人详细信息。我在Person控制器中编写了一个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> 

但是我得到了显示错误的警告框。有人能帮我吗?

因为您添加了一个新的MVC项目,它将在3802以外的端口上运行。因此,页面URI类似于
http://localhost:/home/index
。如果此页面中的JavaScript调用API端点的URI,即
http://localhost:3802/api/Person
,请求将变为跨源请求,浏览器不允许该请求。有关更多信息,请查看。Brock Allen在这个主题上发表了一篇很棒的MSDN文章-。

尝试更改
url:“http://localhost:3802/api/Person“

url:“/api/Person”

确保开发服务器在3802端口工作。在chrome或firebug中打开检查器,查看请求和响应。仅仅因为它在Ajax请求中给了您错误,并不意味着您不应该得到错误。可能存在服务器500内部错误或其他问题,但这可能会为您提供更多信息。
@{
    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>