"
兄弟,确实编码问题、当我为ANSI编码,GBK,GB2312等都是完全正确、
唯独UTF-8的时候日期能显示、天气不能显示、天气恰好是中文、建议你和sina的编码保持一致即可、
ps:你能判断到编码问题上,为何不写个编码下测试一下,问题不就出来了嘛、 ######我老想着是返回的编码有问题 ,不知道怎么改。@narky说对了,url后面加&charset=utf-8就不用改本地文档了。######我新建了个文档,ANSI还真是。######
我拜托你。。。基本的数据类型w定义的就错了好不好。。。
var w = {} ;
其他的都没什么问题,要是不行你找我~
w['深圳']这样取值,不是对数组,你如果略懂json,应该就能理解的啊。。。 ######回复
@JokerTheGreat : json是可以由数组开始的,w的定义并没有错######回复
@JFree : 但是同样这段代码,我保存在本地时没有任何问题。做跨域请求回来取到的window.SWther.w长度为零.我怀疑是编码的问题。 http://php.weather.sina.com.cn/iframe/index/w_cl.php?code=js&day=2&city=深圳&dfc=3 这个是请求地址你帮忙做下实验。谢谢了。我都郁闷一整天了。######回复
@JokerTheGreat : 你做循环取值,观察下返回的w值的内部结构,然后在取你想要的值。如果是数组,那肯定不能直接就w['xx']取值了。var w = {xx:'bb'} ;才可以w['xx']######大哥,上面的代码是新浪返回的啊,我修改不了。 w是数组啊,w['键名'] 这样不对吗?######
楼主我测试了一下,完全ok、仔细检查你的代码,格式是否正确、我的测试结果
(function(){
var w =[];
w['深圳']=[
{
s1:'多云',
s2:'多云',
f1:'duoyun',
f2:'duoyun',
t1:'32',
t2:'25',
p1:'≤3',
p2:'≤3',
d1:'无持续风向',
d2:'无持续风向'
},
{
s1:'多云',
s2:'多云',
f1:'duoyun',
f2:'duoyun',
t1:'32',
t2:'25',
p1:'≤3',
p2:'≤3',
d1:'无持续风向',
d2:'无持续风向'
},
{
s1:'阵雨',
s2:'阵雨',
f1:'zhenyu',
f2:'zhenyu',
t1:'32',
t2:'25',
p1:'≤3',
p2:'≤3',
d1:'无持续风向',
d2:'无持续风向'
}
];
var city = '深圳';
//alert(w[city][2].s1);
window.SWther = {
w : w
};
alert(window.SWther.w[city][2].s1);
})()
######代码都是直接粘贴的。我看不出哪不对。######
引用来自“Beyond-Bit”的答案
楼主我测试了一下,完全ok、仔细检查你的代码,格式是否正确、我的测试结果
下面是我打的代码:
$(document).ready(function (){
var city = '深圳';
$.getScript("http://php.weather.sina.com.cn/iframe/index/w_cl.php?code=js&day=2&city="+city+"&dfc=3",function(){
alert(window.SWther.add.now);//正常输出
alert(window.SWther.w[city][0].s1);//提示未定义
})
});
下面是直接粘贴新浪返回的天气代码(可以正常输出):
(function(){var w=[];w['深圳']=[{s1:'多云',s2:'多云',f1:'duoyun',f2:'duoyun',t1:'32',t2:'25',p1:'≤3',p2:'≤3',d1:'无持续风向',d2:'无持续风向'},{s1:'多云',s2:'多云',f1:'duoyun',f2:'duoyun',t1:'32',t2:'25',p1:'≤3',p2:'≤3',d1:'无持续风向',d2:'无持续风向'},{s1:'阵雨',s2:'阵雨',f1:'zhenyu',f2:'zhenyu',t1:'32',t2:'25',p1:'≤3',p2:'≤3',d1:'无持续风向',d2:'无持续风向'}];var add={now:'2013-09-17 16:42:15',time:'1379407335',update:'北京时间09月17日08:00更新',error:'0',total:'1'};window.SWther={w:w,add:add};})();//0
$(document).ready(function (){
var city = '深圳';
alert(window.SWther.add.now);
alert(window.SWther.w[city][0].s1);
});
######
我在本地测试也是没有问题的。
注意把返回的多余的回车全部去掉
######你在跨域请求时没有问题吗?你帮忙试一下,拜托了。 请求地址: http://php.weather.sina.com.cn/iframe/index/w_cl.php?code=js&day=2&city=深圳&dfc=3######
哥们。我刚刚又跨域测试了一次。还是木问题、
结果如下:第一次alert
第二次alert:
代码如下:
$(document).ready(function (){
var city = '深圳';
$.getScript("http://php.weather.sina.com.cn/iframe/index/w_cl.php?code=js&day=2&city="+city+"&dfc=3",function(){
alert(window.SWther.add.now);
alert("Hello sina weather------------"+window.SWther.w[city][0].s1);
})
});
完全正确啊、 ######..........这是不是代表我人品不行?用的编码是utf-8吗??深受打击啊。。######谁能告诉我是不是编码的问题?
######回复
@JokerTheGreat : 小事一桩,不用客气######回复
@Narky : 兄弟 ,还是你厉害啊。我差点就扔了这破天气了。非常感谢你。######确实是编码问题,默认是GBK。你可以在url后面加上&charset=utf-8,就可以支持utf-8,测试过OK######偶也测试了下,的确utf-8不行,为什么加了&charset=utf-8就ok呢?######加&charset=utf-8新浪就返回utf-8编码的数据啦。新浪默认应该是gbk。######我补一点哈, 其实可以试着把你脚本里的中文转成 Unicode ,
######有什么区别吗?var city = '\u6DF1\u5733';还是不行"