[問題] Safari上使用XMLHttpRequest的問題

看板Ajax作者 (藍閣龍宿)時間11年前 (2014/03/10 19:37), 編輯推噓1(104)
留言5則, 2人參與, 最新討論串1/1
小弟是新手 最近遇到一個問題 望版上各位高手不吝賜教 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

03/11 08:16, , 1F
為何要塞在status text呢...
03/11 08:16, 1F

03/11 08:17, , 2F
一般常態認知中 status text跟status code幾乎是綁在
03/11 08:17, 2F

03/11 08:18, , 3F
一起的 如果瀏覽器不去parse 直接丟掉你也不能說些甚麼
03/11 08:18, 3F

03/11 08:18, , 4F
畢竟那邊本來就不是讓你塞結果用的
03/11 08:18, 4F

03/11 10:42, , 5F
為何要塞在status text呢? +1
03/11 10:42, 5F
文章代碼(AID): #1J7QFSGd (Ajax)
文章代碼(AID): #1J7QFSGd (Ajax)