jquery中ajax方法的datatype的作用

今天在维护一个项目的时候遇见了一个小问题。但是这个问题我认为对于项目十分有帮助。便写下来有助于帮助到大家。首先我们来看一段代码

$(".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执行语句!

相关推荐