首页 新闻 搜索 专区 学院

利用JavaScript调用天气预报服务产生的错误!!(AJax)

0
悬赏园豆:5 [已解决问题] 解决于 2012-01-03 19:31

     各位高手朋友,我想利用JavaScript调用天气预报的Service,遇到一下几个问题:

     1、下面的代码在IE中浏览是正常的,但到火狐或者谷歌浏览器上就不行;

     2、经过在火狐和谷歌上调试,发现xmlhttp.status总为0;

     3、把第二点情况考虑后,又发现在谷歌或者火狐上xmlhttp.responseXML总为null。

     真心盼望朋友们给予解答,在这里先谢谢了。

<script language="javascript" type="text/javascript">

var xmlhttp=null;
window.onload = getChongqing;
function getChongqing(){
//判断浏览器类型,为了兼容!
if (window.XMLHttpRequest)
{
xmlhttp = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
}


xmlhttp.open("GET","http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getWeatherbyCityName?theCityName=57516",true);
xmlhttp.onreadystatechange=stateChange;
xmlhttp.send(null);
}

function stateChange()
{
if(xmlhttp.readyState==4)
{
if(xmlhttp.status==0 || xmlhttp.status==200)
{
//获取所有返回的数据
var data = xmlhttp.responseXML;
//在火狐或谷歌浏览器中,无法调用getElementById,但IE中却正常。。
document.getElementById("no1").firstChild.nodeValue = data.getElementsByTagName("string")[5].firstChild.nodeValue;
document.getElementById("no2").firstChild.nodeValue = data.getElementsByTagName("string")[6].firstChild.nodeValue;
document.getElementById("tianqi_img1").src = "weather" + "/" + data.getElementsByTagName("string")[8].firstChild.nodeValue;
document.getElementById("tianqi_img2").src = "weather" + "/" + data.getElementsByTagName("string")[9].firstChild.nodeValue;
}
}

}

</script>
息壤的主页 息壤 | 菜鸟二级 | 园豆:210
提问于:2012-01-02 23:34
< >
分享
最佳答案
0

2.火狐和谷歌浏览返回xmlhttp.status=0,也就是服务器没有接受你的请求,直接拒绝了,IE接受请求,并返回成功状态200。

3.因为原因2,所以你根本就获取不到任何数据,IE除外。

问题在于在火狐和谷歌浏览器中,拒绝处理Ajax的跨域问题,你调用的那个Webservice和你的网站不是同一个域名。

用Jquery和一个Jquery插件可以解决这个问题。看这个帖子,net_lover的回答就可以得到答案。

http://topic.csdn.net/u/20110203/16/9EFF6CB5-92CC-4154-B91B-7B1A1F343CE3.html

另外:getElementById应该每个浏览器都是可以用的吧。


收获园豆:5
NetSQL | 小虾三级 |园豆:1537 | 2012-01-03 01:33
其他回答(1)
0

建议使用jquery,就不用考虑很多浏览器兼容方面的问题了。

LCM | 园豆:6876 (大侠五级) | 2012-01-02 23:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册