三年前发过一篇chrome调试js的文章,那篇文章尽管异常简单,但在各搜索引擎排名都非常高。同时最近发现jQuery学习群里很多关于jQuery ajax调用方面的问题都是因为返回类型不对引起的,所以现在感觉很有必要写一篇补充文章。
我们还是以使用chrome调试ajax做介绍,其他如firefox、IE等方法也类似,但本人感觉还是chrome好使些。关于设置断点什么的我们不再多说,可以看看Google Chrome调试js入门。以前文章中举的例子就是json的,但这些天发现很多朋友不会查看返回类型是否正确,下边我们直接举例说明,如我们的后台有下边的代码:
public ActionResult getstudents() { List<Student> list = new List<Student>(); list.Add(new Student() { id = 1, name = "小李" }); list.Add(new Student() { id = 2, name = "小王" }); return Json(list, JsonRequestBehavior.AllowGet); }使用chrome并按下F12,在Sources下找到我们的js代码。如果你单独将代码写在文件中,则点开左边相应的js文件夹找到文件后同样可以设置断点,这里不再多说。
从图中可看到json请求返回已经成功进入success,点击Sources左侧的Network,我们可以看到getstudents的请求
点击getstudents,可以在Headers中看到ajax请求的返回类型,这也是我们本篇文章的重点,如此次请求返回如下:
如果你发现没进入success时,即可用上述方法检验返回结果的json是否正确,如果发现返回不是我们需要的类型就得修改我们的后台代码,使它返回类型符合我们的要求。在很多跨域请求中,本来返回类型就要求是jsonp,但在参数中有人写的dataType竟然是json,这种错误希望大家注意避免。点击上图的Response,我们可看到返回结果:
大家可使用jQuery学习站的json在线检测工具来验证json返回是否合格,如此次请求的返回结果检测结果如下:
当然对这个简单的例子来说,你可能一下会看出返回json类型是否正确,但当返回集较大时就不太容易了。如自己手动拼json是很容易出错的,在这建议尽量不要拼json字符串来输出,很容易出问题,如在asp.net mvc 3 中建议使用ServiceStack.Text来进行序列化。没有此检验工具,要发现其中的json错误还是要花些工夫的,如果觉得工具有用的话,也欢迎和其他朋友分享哦^_^。
总结:本篇文章非常简单的介绍了下ajax请求中怎么使用chrome来快速判断请求的返回类型,提高我们调试js代码的速度。当然chrome调试js有非常多的技巧,在调试过程中大家再慢慢熟悉提升吧!