jquery ajax一个坑爹的问题

问题描述: jquery ajax dataType为json时,如果json数据不严格,不进入success方法,控制台也不会报错。

data.json

1 {"result":"0","data":2016-04-27}

ajax常规写法代码:

1 $.ajax({
2     url: 'data.json',
3     type: 'POST',
4     dataType: 'json',
5     success: function(data){
6         console.log(data);
7     }
8 });

以上代码可能是大多数coder的常用写法,如果服务器返回的是如data.json那样的数据格式,这段代码无任何问题,控制台也没报错,但是就不会执行success方法(小小的一个问题,花费了大半个小时才找出来,不知道各位看官没有踩到这坑)。如果对这个json数据调用json格式化方法,则会报错:

1 JSON.parse('{"result":"0","data":2016-04-27}');//控制台报错:SyntaxError: JSON.parse: expected ',' or '}' after property value in object at line 1 column 26 of the JSON data

在遇到这个问题之前,一直认为error方法没任何用处,但是如果这段代码加上error方法,则会提示错误:

 1 $.ajax({
 2     url: 'data.json',
 3     type: 'POST',
 4     dataType: 'json',
 5     success: function(data){
 6         console.log(123);
 7     },
 8     error: function(){
 9         console.log("数据错误");//控制台输出:"数据错误"
10     }
11 });

推荐promise写法:

1 $.ajax({
2     url: 'data.json',
3     type: 'POST',
4     dataType: 'json'
5 }).done(function() {
6     console.log("success");
7 }).fail(function() {
8     console.log("error");
9 });

总结:遇到这个坑之后,告诉我一个道理,error方法是必须的,虽然看似没什么作用,但是偶尔的错误提示还是有必要的。

posted @ 2016-04-27 11:06  极·简  Views(437)  Comments(0Edit  收藏  举报