调用Web Api Get Method时,Ajax调用不起作用。你知道吗,我错过了什么?

时间:2014-03-06 05:19:06

标签: javascript jquery ajax web-services asp.net-web-api

我在服务器端的ValuesController中有一个get方法,这里使用的是MVC 4 Web Api

方法

[HttpGet]
        public List<Product> Get()
        {
            return productRepository.ListOfProducts().ToList();
        }

我通过ajax

调用了这个方法
$.ajax({
            url: "http://localhost:57260/api/values",
            type: "GET",
            dataType: 'json',
            success: function (data) {
                alert("Ramesh is a yummy ;)");
                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("Ramesh is a fool");
            }
        });
  

这个ajax方法总是去失败函数,不去成功方法

但是当我在浏览器中键入url时,它会返回json数据。见这个屏幕..

enter image description here

但为什么ajax不起作用?这很奇怪......

注意,Ramesh。

更新:

我看不到控制台错误的详细信息,因为我正在使用Windows移动应用,所以它在移动模拟器上运行

2 个答案:

答案 0 :(得分:1)

根据您提供的详细信息,我可以理解,这主要是因为相同来源的政策限制。谷歌的“ASP.NET Web API CORS”。

答案 1 :(得分:0)

这样可行。

$.ajax({
    url: "http://localhost:57260/api/values",
    method: "GET",
    headers: { "Accept": "application/json; odata=verbose" },
    function (data) {
        alert("Ramesh is a yummy ;)");
        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("Ramesh is a fool");
    }
});