解析JSON数据格式时遇到AJAX跨域问题,怎么解决?
之前做好了JSON格式:
{"status":200,"message":"查询成功","data":[{"Title":"购买须知","PicUrl":"https://www.ihuale.com:9999/ShopImg/201601/购买须知_2016012.jpg","ActUrl":"https://www.ihuale.com:9999/Activitys?ActId=8a5e1cbc-4843-40a5-a82e-aff291d608ab"},{"Title":"专享花束","PicUrl":"https://www.ihuale.com:9999/ShopImg/201602/24.8最新_20160228.jpg","ActUrl":"https://www.ihuale.com:9999/Activitys?ActId=531b5089-e6f7-4921-ae0c-13d5c8a408c7"},{"Title":"养护技巧","PicUrl":"https://www.ihuale.com:9999/ShopImg/201601/养护技巧_2016012.jpg","ActUrl":"https://www.ihuale.com:9999/Activitys?ActId=67ff92fc-e199-42ad-8340-51f22af30a08"}]}
下面写的javascript:
/* 解析json */
$.ajax({
cache: false,
async: true,
type: "get",
url: "https://www.ihuale.com:9999/rest/activity",
dataType: "json",
success: function (data) {
var datas = JSON.parse(data);
console.log(data);
},
error:function(status, message, data) {
console.log(status);
console.log(message);
console.log(data);
}
});
这样写的输不出来,还不清楚在哪里出问题。请各位老师帮忙指导,谢谢。
为什么要手动解析。时至今日,这个轮子真的不用自己造。
用log打印一下响应的值,字符串就用json.parse对象就直接用。其实这方法很多的。
当然ajax可以通过设定格式,直接先处理咯,这个过程你看不到。
遍历的话,循环就可以了。
直接使用$.ajax需要把json字符串解析成对象,data=$.parseJSON(data);使用$.get或者$.post则不需要
dataType
是请求的正文格式,你GET请求哪来的正文?
contentType
才是响应的,如果响应在协议头中设置了application/json
,那么data应该自行解析成json对象。
你是不是解析了两遍?
试一试:
function callback( data ){
console.log( data );
}
$.ajax({
crossDomain: true,
type:"GET",
contentType: "application/json; charset=utf-8",
async:false,
url: "https://www.ihuale.com:9999/rest/activity",
dataType: "jsonp",
jsonpCallback: 'callback'
});
if都没有 你的else怎么来的 编辑器就不会报错?
跨域的话要采用`
jsonp