jquery调用Web API提示"parseerror"

来源:互联网 发布:单片机怎么和电脑连接 编辑:程序博客网 时间:2024/06/17 15:55

win7+vs2015

接口是:ASP.NET Core1.0  Web API项目 方法是

[HttpGet]
        public List<Person> Get()
        {
            List<Person> list = new List<Person>() { new Person { tname = "ffdfd", name = "name" }, new Person { tname = "fdfd", name = "name2" } };
           
            return list;
        }


public class Person
    {
        public string tname { get; set; }
        public string name { get; set; }
    }


新建一个web项目

建立一个index.html调用api接口

方法是:$.ajax({
                url: url, //请求的url
                dataType: "json",
                //jsonpCallback: "jsonpCallback",
                success: function (json) {
                    alert(json[0].tname);
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                            alert(XMLHttpRequest.status);
                            alert(XMLHttpRequest.readyState);
                            alert(textStatus);
                        }
            });

但是status=0  readyState=0 请求失败

通过在网上查找发现很多的方法提示需要跨域请求如

 $.ajax({
                url: url,
                dataType: 'jsonp',
                jsonp: 'callback',//回调函数名字
                jsonpCallback: 'success_jsonpCallback',//可以不写,也可以自定义,用来取代 jQuery 自动生成的随机函数名,不写将由jq自动生成,每次生成的结果都不一样
                // processData: true,
                type: 'get',
                success: function (json) {
                    console.log(json);
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    alert(XMLHttpRequest.status);
                    alert(XMLHttpRequest.readyState);
                    alert(textStatus);
                }
            });

结果是:status=200 readyState=4,响应成功但是提示“parseerror”,一直以为的是html页面的ajax请求有问题,试了很多方法,大同小异,都是parseerror

今天在群里有人提示我是不是在Web API里没有设置跨域的问题呢?

在网上找到一段代码,在web.confign文件里的<system.webServer>里加上以下代码

<httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="*" />
        <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE" />
      </customHeaders>
    </httpProtocol>

,然后用 $.ajax({
                url: url, //请求的url
                dataType: "json",
                success: function (json) {
                    alert(json[0].tname);
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                            alert(XMLHttpRequest.status);
                            alert(XMLHttpRequest.readyState);
                            alert(textStatus);
                        }
            });

再次请求,就可以得到json里的数据了。

0 0
原创粉丝点击