解析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); } });
这样写的输不出来,还不清楚在哪里出问题。请各位老师帮忙指导,谢谢。
dataType
是请求的正文格式,你GET请求哪来的正文?
contentType
才是响应的,如果响应在协议头中设置了application/json
,那么data应该自行解析成json对象。
你是不是解析了两遍?
跨域的话要采用`
jsonp
为什么要手动解析。时至今日,这个轮子真的不用自己造。
用log打印一下响应的值,字符串就用json.parse对象就直接用。其实这方法很多的。
当然ajax可以通过设定格式,直接先处理咯,这个过程你看不到。
遍历的话,循环就可以了。
if都没有 你的else怎么来的 编辑器就不会报错?
直接使用$.ajax需要把json字符串解析成对象,data=$.parseJSON(data);使用$.get或者$.post则不需要
试一试: 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' });