2010-09-16 94 views
1

我試圖創建一個ajax連接到天氣xml提要,然後解析返回的數據。我沒有任何問題通過IE進行連接,但出於某種原因,我在FF或Safari中沒有任何運氣。基本上我正在做的是運行一個包含下面的代碼的HTML文件。在IE,FF和Safari中運行Ajax

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

    function makeRequest(zip) { 
    var url = 'http://rdona.accu-weather.com/widget/rdona/weather-data.asp?location=' + zip; 
     //var httpRequest; 
    var httpRequest = false; 

     if (window.XMLHttpRequest) { 
    document.write("xmlhttprequest"); 
     httpRequest = new XMLHttpRequest(); 
      if (httpRequest.overrideMimeType) { 
       httpRequest.overrideMimeType('text/xml'); 
       // See note below about this line 
      } 
     } 
     else if (window.ActiveXObject) { // IE 
      try { 
       httpRequest = new ActiveXObject("Msxml2.XMLHTTP"); 
      } 
      catch (e) { 
       try { 
        httpRequest = new ActiveXObject("Microsoft.XMLHTTP"); 
       } 
       catch (e) {} 
      } 
     } 

     if (!httpRequest) { 
      alert('Giving up :(Cannot create an XMLHTTP instance'); 
      return false; 
     } 
     httpRequest.onreadystatechange = function() { alertContents(httpRequest); }; 
     httpRequest.open('GET', url, true); 
     httpRequest.send(''); 

    } 

    function alertContents(httpRequest) { 

     if (httpRequest.readyState == 4) { 
      if (httpRequest.status == 200) { 
       alert(httpRequest.responseText); 
      } else { 
       alert('There was a problem with the request.'); 
      } 
     } 

    } 

makeRequest(84405); 
</script> 
</html> 

任何幫助和/或建議將不勝感激。

+0

如果你刪除了「document.write(」xmlhttprequest「);」 – Annie 2010-09-16 05:53:18

+0

我只是爲了測試目的而將其放在那裏,這樣我就可以看到我在哪裏。 – cameron213 2010-09-16 05:57:35

回答

0

對於跨瀏覽器的東西,我建議你使用像JQuery這樣的庫,因爲它會安靜地平滑IE和Firefox和Safari等問題。爲了使代碼格式正確,請使用工具欄中的101010按鈕。

1

我強烈建議你使用框架來做這種事情。框架將爲您完成所有瀏覽器兼容性工作。

另一方面,如果你有興趣如何做到這一點作爲一個學術活動...仍然得到一個框架!看看框架是如何實現的,你將立即學習所有的陷阱。

Mootools is my framework of choice

爲了執行在Mootools的一個基本的AJAX請求,你會做以下內容:Request類

window.addEvent('domReady', function() { 
    new Request({ 
     'url': "The url where you want to send the request 
     'data': "Some data to send. It can be an object." 
    }).send(); 
}); 

完整文檔可以發現here

如果您想了解Mootools如何實現跨瀏覽器AJAX,可以找到請求類here的來源。

你會發現Browser.Request特別有用的來源。

+0

這是爲iphone項目不確定這是否適用於我的目的。 – cameron213 2010-09-16 06:02:15

+0

我對iphone的開發並不熟悉。但是,如果iphone應用程序理解JavaScript,那麼Mootools就有一個服務器版本,它應該在iphone應用程序中運行得很好。只需將它放在代碼的頂部即可。 – 2010-09-16 06:05:38

+0

@cameron - 它應該工作。 Mobile Safari的標準支持非常出色,我不認爲它與桌面版本在ajax支持方面有所不同。 – 2010-09-16 06:32:23

1

恐怕你會遇到一些問題,因爲same origin policy,這意味着你不能做XMLHTTPRequests到另一個域。

甚至沒有jQuery(你真的應該檢查出來)可以幫助你。

相關問題