作者bluedragon (蓝阁龙宿)
看板Ajax
标题[问题] Safari上使用XMLHttpRequest的问题
时间Mon Mar 10 19:36:57 2014
小弟是新手 最近遇到一个问题
望版上各位高手不吝赐教
code如下:
function detectBrowser(){
var sAgent = navigator.userAgent.toLowerCase();
this.isIE = (sAgent.indexOf("msie")!=-1); //IE6.0-7
this.isFF = (sAgent.indexOf("firefox")!=-1);//firefox
this.isSa = (sAgent.indexOf("safari")!=-1);//safari
this.isOp = (sAgent.indexOf("opera")!=-1);//opera
this.isNN = (sAgent.indexOf("netscape")!=-1);//netscape
this.isCh = (sAgent.indexOf("chrome")!=-1);//chrome
this.isMa = this.isIE;//marthon
this.isOther = (!this.isIE && !this.isFF && !this.isSa
&& !this.isOp && !this.isNN && !this.isSa);//unknown Browser}
function handleStateChange(){
if (objXMLHTTP.readyState == 4) {
if (objXMLHTTP.status == 200) {
var ret = objXMLHTTP.statusText;
if (ret != ""){
var info = ret.split('|');
code = parseInt(info[0], 10);
city = String(info[1]);
temp = parseInt(info[2], 10);
unit = String(info[3]);
showWeather();
}
} else{
if(time <= 10){
setTimeout("checkWeather();", time*1000); time += 5; }
else{
code = null;
showWeather();
}
}
}
}
function checkWeather(){
var oBrowser = new detectBrowser();
if (window.XMLHttpRequest) {
objXMLHTTP=new XMLHttpRequest(); }// code for IE
else if (window.ActiveXObject) {
objXMLHTTP=new ActiveXObject("Microsoft.XMLHTTP");
}
objXMLHTTP.open("GET","<%=controller%>/?checkWeather=1",true);
if (oBrowser.isCh && oBrowser.isSa) { /*let Chrome refresh page */
objXMLHTTP.setRequestHeader("If-Modified-Since",(new Date(0)).toISOString()); }else{ /*let IE refresh page */
objXMLHTTP.setRequestHeader("If-Modified-Since",new Date(0));
}
objXMLHTTP.onreadystatechange = handleStateChange;
objXMLHTTP.send(null);
}
这段code的目的是透过XMLHttpRequest物件 取得有关城市 天气温度等资讯
透过WireShark抓的封包 理论上都会收到下列封包
HTTP/1.1 200 28|Taipei|16|c
在handleStateChange()中 objXMLHTTP.statusText便可取得"28|Taipei|16|c"
之後再根据这个去parse
run在IE FireFox Chrome都可以正常的get到资讯
但是run在Safari上面很奇怪 不管试几次
objXMLHTTP.statusText所得到的一直是"OK"
WireShark抓到的封包明明就是"HTTP/1.1 200 28|Taipei|16|c"
而不是"HTTP/1.1 200 OK"
想请教各位高手 是小弟code有甚麽地方写错了
还是Safari上get到的statusText会always是"OK"?
还请高手指点 感激不尽!!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.34.254.51
1F:→ danny8376:为何要塞在status text呢... 03/11 08:16
2F:→ danny8376:一般常态认知中 status text跟status code几乎是绑在 03/11 08:17
3F:→ danny8376:一起的 如果浏览器不去parse 直接丢掉你也不能说些甚麽 03/11 08:18
4F:→ danny8376:毕竟那边本来就不是让你塞结果用的 03/11 08:18
5F:推 UniFish:为何要塞在status text呢? +1 03/11 10:42