jquery调用Web API提示"parseerror"

    xiaoxiao2021-03-25  91

    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里的数据了。

    转载请注明原文地址: https://ju.6miu.com/read-24864.html

    最新回复(0)