今天看到一段代码:
//初始化时间轴
function guide_init(mode){
//步骤数据初始化
var refer_url = window.location.href;
$.ajax({
type: "GET",
url: ALLPASS_BASE_URL + "index.php?s=api/getStepsByCourse",
dataType: 'text',
data:{
refer:refer_url
},
success:function(res){ //成功的回调函数
var guideData = JSON.parse(res);
console.log("guideDATE:");
console.log(guideData);
//备注:制作期间依据课程,进行管理,而非整个大教程;
看了后台代码,返回的是json。这儿为什么还将dataType设置成了text,而且还要用JSON.parse( )转一次?
改成下面这样,就可以了:
//初始化时间轴
function guide_init(mode){
//步骤数据初始化
var refer_url = window.location.href;
$.ajax({
type: "GET",
url: ALLPASS_BASE_URL + "index.php?s=api/getStepsByCourse",
dataType: 'json',
data:{
refer:refer_url
},
success:function(res){ //成功的回调函数
//备注:制作期间依据课程,进行管理,而非整个大教程;
var html = '';
var tooltips = '';
var jsRemove = '';
if(mode == "CREATE"){
jsRemove = '<i class="js-remove">✖</i></span>';
}
$.each(res,function(i,e){
//.....更多代码省略
原文代码中,coder为什么那么做,仍不明白。
小结:
dataType 预期服务器返回的数据类型。
如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如 XML MIME 类型就被识别为 XML。在 1.4 中,JSON 就会生成一个 JavaScript 对象,而 script
则会执行这个脚本。随后服务器端返回的数据会根据这个值解析后,传递给回调函数。可用值:
•”xml”: 返回 XML 文档,可用 jQuery 处理。
•”html”: 返回纯文本 HTML 信息;包含的 script 标签会在插入 dom 时执行。
•”script”: 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了 “cache” 参数。注意:在远程请求时(不在同一个域下),所有 POST 请求都将转为 GET 请求。(因为将使用 DOM 的 script标签来加载)
•”json”: 返回 JSON 数据 。
•”jsonp”: JSONP 格式。使用 JSONP 形式调用函数时,如 “myurl?callback=?” jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。
•”text”: 返回纯文本字符串