2014-02-28 4 views
0

야후 날씨 API 및 jQuery를 사용하여 내 웹 사이트에서 내 도시의 현재 날씨를 표시하고 싶습니다.jQuery URL 구문 분석 오류

여기 내 코드입니다.

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title></title> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
<script> 
    $(document).ready(function() { 
     $.ajax({ 
      type: "GET", 
      url: "http://weather.yahooapis.com/forecastrss?w=12758714", 
      dataType: "xml", 
      success: function (xml) { 
       var title = $(xml).find('condition').attr('temp'); 
       $('<div> </div>').html('<p>' + title + '</p>').appendTo('#a'); 
      }, 
      error: function (data) { 
       $('<div> </div>').html('<p> Error </p>').appendTo('#a'); 
      } 
     }); 
    }); 
</script> 
</head> 
<body id="a"> 

</body> 
</html> 

이 코드를 실행하면 오류가 표시됩니다. jQuery와 Ajax에 익숙하지 않아서이 문제를 해결할 수 없다. http://weather.yahooapis.com/forecastrss?w=12758714을 내 브라우저에 열어 XML 파일에 모든 내용을 저장 한 다음 해당 XML 파일의 URL을 제공하면 코드가 완벽하게 실행됩니다. 그러나 URL로, 그것은 아닙니다. 아무도 이것으로 나를 도울 수 있습니까?

미리 감사드립니다.

+0

오류가 무엇입니까 : 다른 접근 방식을 시도? 그것은 크로스 도메인 아약스 문제와 비슷하지만 20 개의 질문을하는 것보다 모든 정보를 얻는 것을 선호합니다. –

+0

http://stackoverflow.com/q/3506208/139010 –

답변

-1

도메인 간 문제입니다. http://en.wikipedia.org/wiki/Same-origin_policy

가장 좋은 방법은 AJAX 호출에서 Yahoo Weather API를 호출하는 대신 백엔드 [PHP/JAVA/RoR ...]를 호출하는 것입니다. 그런 다음 백엔드에서 Yahoo Weather API를 호출 할 수 있습니다. 이렇게하면 레이어가 추가되지만 가장 안전한 방법입니다. 또한 필요한 경우 백엔드에서 수신 된 데이터를 처리 할 수 ​​있습니다.

+0

@G S Bajaj : 방금 말한 것에 대한 예가 있습니까? 아니면 이렇게 할 수 있습니까? 백엔드에서 yahoo API를 호출 한 다음 url에 의해 반환 된 모든 데이터를 xml 파일에 저장 한 다음 해당 xml 파일을 호출합니다. 그것은 실현 가능합니까? – user3363460

+0

@ user3363460 실제로이 모든 것은 다음과 같은 흐름의 일부일 수 있습니다. [a] Frontend ajax 호출에서 [b] 가 가리키는 컨트롤러 기능에서 필요한 야후 API를 호출하십시오. PHP를 사용하는 경우 컬을 사용할 수 있습니다. [c] Yahoo API 호출의 결과를 가져 와서 프론트 엔드로 되돌려 보내십시오. 당신이 정말로 원하지 않는 한 저장할 필요가 없습니다. [d] 프론트 엔드에서 마치 야후의 응답을 처리합니다. 이 방법은 모든 브라우저와 모든 버전에서 작동합니다. 유일한 것은 서버에 대한 추가 호출이 있다는 것입니다. –

+0

@ 부정한 표를 던진 사람 : 이유를 설명해 주시겠습니까? –