今天在维护一个项目的时候遇见了一个小问题。但是这个问题我认为对于项目十分有帮助。便写下来有助于帮助到大家。首先我们来看一段代码
$(".search").click(function{ $.ajax({ type:"get", url:"/communitys/CommunityShowController?method=listByAllCondition", dataType:"json", contentType: "application/x-www-form-urlencoded; charset=utf-8", data: { school: school, grade: grade, type: type }, success: function(data){ var showId = data[0].communityShowId; if(showId == 0){ $("#list").html("无相应社团"); }else{ $("#list").html(''); var list = ' '; var data1 = data; $.each(data1, function (index, item) { //循环获取数据 list += "<li><a href='/communitys/CommunityShowController?method=toEnter&communityShowId="+ item.communityShowId +"'><div class='img-box'><img src='/communitys/backpages/image/"+item.logo+"'></div><p class='img-cap'>"+item.name+"</p></a></li>"; }); $(list).appendTo("#list"); } } }); });
这是我在学习与维护中的一段代码。其意义就是指我点击搜索,当有与要求想对应的内容时,我显示一张张图片,而没有内容的时候我显示一句话“无相应社团”。
这是已经可以运行的代码,我之前的代码与之相差的地方是,我没有设置datatype
其次
if(showId == 0){ //这个语句我写成了 if(data == '[{"communityShowId":"0","logo":"",name:""}]'){
我的原意是想让data直接解析这个json数据,但是由于我没有设置datatype,所以这个json做成的数组被解析成了字符串。这样,根本就无法执行if下面的语句。
而当我设置了datatype时,ajax会把这个字符串解析成json数据格式,与我的内容相匹配。其次我设置
var showId = data[0].communityShowId;
这就相当于我现在解析showId是解析data这个json数据,而我把data这个json数据看成了数组,每一个键将对应一个键值,我把showId获取成了这个json里面的第一个键。当showId==0 的时候,也就是当这个键值为0的时候,将返回if执行语句!