Запуск Ajax в IE, FF и Safari - PullRequest
       0

Запуск Ajax в IE, FF и Safari

1 голос
/ 16 сентября 2010

Я пытаюсь создать AJAX-соединение с фидом Weather XML и затем проанализировать возвращенные данные. У меня нет проблем с установлением соединения через IE, но по какой-то причине мне не повезло в FF или Safari. По сути, я запускаю HTML-файл, который содержит следующий код.

<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>

Любая помощь и / или предложения будут с благодарностью.

Ответы [ 3 ]

1 голос
/ 16 сентября 2010

Я настоятельно рекомендую вам использовать фреймворк для подобных вещей.Frameworks сделает все, что касается совместимости браузеров, за вас.

С другой стороны, если вы заинтересованы в том, чтобы сделать это как учебное упражнение ... все же получите фреймворк!Посмотрите, как это делает фреймворк, и вы сразу же изучите все подводные камни.

Мой выбор - Mootools .

Для выполнения основного запроса AJAX вMootools вы должны сделать следующее:

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();
});

Полная документация для класса Request может быть найдена здесь .

Если вы хотите увидеть, как Mootools реализует кросс-браузерAJAX, вы можете найти источник класса Request здесь .

Вы найдете источник Browser.Request особенно полезным.

1 голос
/ 16 сентября 2010

Боюсь, что у вас возникнут некоторые проблемы из-за той же политики происхождения , что означает, что вы не можете выполнять запросы XMLHTTP в другой домен.

Даже jQuery (что вы действительно должны проверить в любом случае) может помочь вам в этом.

0 голосов
/ 16 сентября 2010

Для кросс-браузерной работы я рекомендую вам использовать библиотеку, такую ​​как JQuery, потому что она будет спокойно сглаживать проблемы IE против Firefox, Safari и т. Также для правильного форматирования кода используйте кнопку 101010 на панели инструментов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...