2014-10-25 6 views
0

Я следил за некоторыми учебниками по parse XML с удаленных веб-сайтов и встретил чудесно сформулированный вопрос и ответ в stackoverflow. Однако даже после того, как следующий вопрос не работает, программа не работает.XML Parsing remote server

<!DOCTYPE html> 
<html> 
<head> 
<title>Aviation</title> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
<script type="text/javascript"> 
var result; 
function xmlparser() { 
    $.ajax({ 
     type: "GET", 
     url: "http://services.faa.gov/airport/status/IAD?format=xml", 
     dataType: "xml", 
     success: function (xml) { 
      result = $(xml).find("City").text(); 
      document.myform.result1.value = result; 
     }, 
     error: function (xml) { 
      alert(xml.status + ' ' + xml.statusText) ; 
     } 
    });    
}   
    </script>  
    </head> 
    <body> 
    <p id="details"></p> 
    <form name="myform"> 
    <input type="button" name="clickme" value="Click here to show the city name" onclick=xmlparser() /> 
    <input type="text" name="result1" readonly="true"/>   
    </form> 
    </body> 
</html> 

Веб-сайт, который я пытаюсь разобрать, такой же.

US FAA

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

+1

не может выполнить перекрестный домен xml ajax, когда api не разрешен CORS. Прочитайте по той же политике происхождения – charlietfl

+2

, вы можете использовать jsonp из одного и того же api: http://services.faa.gov/airport/status/IAD?format=json&callback=alert – dandavis

ответ

1

Как уже упоминалось, вы можете (нужно) использовать jsonp, потому что faa.gov, очевидно, забыл добавить соответствующий заголовок к своим ответам API. Кстати, всегда предпочитаю json над xml с Javascript - с ним гораздо приятнее работать.

// ask faa.gov to add the HTTP header "Access-Control-Allow-Origin: *" to their response 
// then you can use this 
// jQuery.getJSON('http://services.faa.gov/airport/status/IAD?format=json'); 

jQuery.ajax({ 
    url: 'http://services.faa.gov/airport/status/IAD?format=json', 
    dataType: 'jsonp', 
    success: function (data) { 
    document.myform.result1.value = data.city; 
    } 
}); 
+0

Почему-то только Вашингтон приходит, когда я нажимаю кнопка. Ты знаешь почему ? – LonelySoul

+0

Ну, я не знаю, что вы пытаетесь сделать или ожидаете получить. В URL-адресе «IAD» означает аэропорт «Вашингтон Даллес Интернешнл». Например, если вы замените его «LAX», вы получите город «Лос-Анджелес». Вам нужно изменить URL-адрес запроса, чтобы получить разные города. – Swonkie