当前位置: 代码迷 >> JavaScript >> 到目前为止类乎无人能摆平,服务端返回json数据,总是提示“invalid label”
  详细解决方案

到目前为止类乎无人能摆平,服务端返回json数据,总是提示“invalid label”

热度:373   发布时间:2012-10-18 13:46:55.0
到目前为止好像无人能摆平,服务端返回json数据,总是提示“invalid label”
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="360.css" type="text/css">
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
var jq = jQuery.noConflict();
var url = "http://m.weather.com.cn/data/101010100.html?jsoncallback=?";
jq.getJSON(url,
function(data){
//alert(typeof(data));
//var json = eval('('+data+')');
//alert(typeof(data));
alert(typeof(data));
});
</script>
</head>
<body>
</body>
</html>

从中国天气网中弄个天气出来,结果在firefox中总是提示invalid label,这个怎么解决啊,现在基本可以确定编码没有问题,有返回数据!

------解决方案--------------------
探讨

{"weatherinfo":{"city":"北京","city_en":"beijing","date_y":"2010年8月21日","date":"庚寅年七月十二","week":"星期六","fchh":"08","cityid":"101010100","temp1":"26℃~20℃","temp2":"28℃~22℃","temp3":"31℃~21℃","temp4":"29℃……

------解决方案--------------------
跨域访问叫jsonp,采用动态创建script标签实现

其实就是类似:
<script src="http://code.jquery.com/jquery-latest.min.js"></script>

这样就能访问jquery.com的文件

那么这里就必须保证:文件是正确的js脚本

回头看http://m.weather.com.cn/data/101010100.html
“{ xxxxxxxxxx }”只是json数据,不是正确的js脚本。

虽然你增加了jsoncallback链接参数,但服务器返回的数据并不是
“jsoncallback({ xxxxxxxxxx })”

这种情况,你只有自己做一个代理了,通过服务器获取http://m.weather.com.cn/data/101010100.html的内容,解决跨域的问题。
  相关解决方案