专栏名称: 前端JavaScript
分享 | 学习 | 交流 | 原创 分享是学习的开始;学习不必要从头开始,是从现在开始;交流能沟通你我,提高你的学识;期待你的加入!!! web前端技术交流,JavaScript,HTML5,CSS3……
目录
相关文章推荐
51好读  ›  专栏  ›  前端JavaScript

[S3-E371]ajax如何处理服务器返回的3种数据格式

前端JavaScript  · 公众号  · Javascript  · 2017-06-26 07:34

正文

请到「今天看啥」查看全文



需要注意的地方:


1. 如果不指定dataType的话,会根据返回的头部信息判断(就是Content-type)。


综论

ajax返回3种数据格式:html文本格式,xml通用格式,json格式,

数据类型:整数,字符串,数组,对象


ajax返回整数类型

/**

* ajax_delete

*/

$(".delete").click(function(){

var id = $(this).attr('id');

var flag = confirm("确定要删除第"+id+"条信息吗?");

if(flag){

var tr = $(this).parent().parent();

$.get("index.php?r=demo1/delete",{id:id},function(data){

console.log(data);

if(data==1){

tr.remove();

alert("删除成功");

}else{

alert("删除失败");

}

})

}

})

这样,后台一个判断,执行则返回1就好了,可以说是最简单的ajax了。通常返回整形都是做判断用。是否删除啊,.....,虽然简单,但是很常用。


ajax返回Html/text(字符串类型)

与上面返回int相对应的呢...比如ajax添加,就会返回html或者text,也就是string类型的数据。


ajax返回json

因为json没有格式,相同内容占用空间少处理快,所以较xml,字符串(text/html)而言,我们更经常处理json。


$.ajax({

type:"GET",

url:"address_do.php",

//dataType:"json",

data:{postcode:postcode},


success:function(data){

console.log(data);

location.href="address_do.php";

if(data.success == 1){

var str = "";

str += "

"+data.result.lists[0].simcall+"

";

str += "

"+data.result['asc']+"

";

$("button").after(" "+str+" ");

}

}

})


$.get(url,data,function(msg){

msg = eval("("+msg+")");

if(!(/^[0-9][0-9]{5}$/.test(postcode))){

str += "

您输入的邮政编码不正确

";

$("button").after(" "+str+" ");

}else{

str += "

"+msg.result.lists[0].simcall+"

";

str += "

"+msg.result['asc']+"

";

$("button").after(" "+str+" ");

}

},'json');alert(data);


success:function(data){

console.log(data);

var result = data['result'];

var str = "";

str += "

手机号 归属地 区号 数据来源
"+result['phone']+" "+result['att']+" "+result['postno']+"
";

$("#click").after(str);

}


$.ajax({

type: "GET",

url: "Ajax/Test.ashx",

data: "HandleType=GetList&PName=" + escape($("#localvalue").val()), //要发送的数据

dataType: "text",

success: function (data) {

if (data != null && data != "") {

var dataObj = eval("(" + data + ")"); //转换为json对象

var html = "";

for (var i = 0; i < dataObj.length; i++) {

html += "

";

html += "

" + (parseInt(i) + parseInt(1)) + "" + dataObj[i].Name + "";

html += "

";

}

$("#table").html(html);

}

}

})


html部分


eval的使用

PS:红色部分是容易出错的地方,也就是ajax返回数据的拼接,也是ajax的难点之一。

另外,需要注意的是,这段代码里设定返回数据类型是text,所以需要用eval把返回数据处理

参考 http://blog.csdn.net/ztzy520/article/details/54410967

用eval()方法把返回来的json数据转换成数组

data=eval('('+data+')');


$("#search").click(function(){

var obj = $(this);

var searchContent = obj.prev().val();

alert(searchContent);

$.ajax({

url:"index.php?r=news/search",

type:"post",

dataType:"json",

data:{searchContent:searchContent},

success:function(data){

var str = "";

str+='

ID 新闻标题 新闻内容 分类 图片 操作
'+data[i].news_id+' '+data[i].newsTitle+' '+data[i].newsContent+' '+data[i].cate_name+' 删除 / 修改
';

str+='

';

str+='

';

str+='

';

str+='

';

str+='

';

str+='

';

str+='

';

str+='

';

if(data == 0){

str+="

没有搜索到相关数据";

}else{

for(var i=0;i


str+='

';

str+='

';

str+='

';

str+='

';

str+='

';

str+='

';

str+='

';

str+='

';

}

}

$("#table").html(str);


}

})

})


转自: https://segmentfault.com/a/1190000009426706

作者: jeffcott_lu








请到「今天看啥」查看全文