今天在维护一个项目的时候遇见了一个小问题。但是这个问题我认为对于项目十分有帮助。便写下来有助于帮助到大家。首先我们来看一段代码
$(".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执行语句!
本文介绍了一段使用Ajax实现搜索功能的代码,并详细解释了如何通过设置dataType来正确解析JSON数据,避免将其误认为字符串而导致的逻辑错误。
4868

被折叠的 条评论
为什么被折叠?



