2009-08-26 5 views
2

이것은 매우 어리석은 질문 일 수 있습니다. http://www.hostip.info/use.html에 의해 제공되는 API를 사용하여 사용자의 IP 주소를 기반으로 사용자 주소를 찾는 geolocation을 수행하려고합니다. jquery와 함께 다음 코드를 사용하여 이것을 사용하고 있습니다.자바 스크립트로 호스트 위치를 사용하는 Geolocation

$.get("http://api.hostip.info/get_html.php", function(data){ 
    alert("Data Loaded: " + data); 
}); 

슬프게도이 방법은 효과가없는 것 같습니다. 경고는 절대 발생하지 않으므로 전화가 절대 반환되지 않는다고 가정합니다. 누구든지 전에 이것을 했습니까? 감사합니다

답변

4

나는 그들에게 전화가 성공했다고 생각하지 않습니다. 도메인 간 제한으로 인해 결과 데이터를 읽지 못할 가능성이 있습니다. hostip이 JSONP API을 제공했다면 사용할 수는 있지만 사이트에서 언급하지 않았습니다.

+0

잘 [hostip은 JSON API를 제공합니다] (http://www.hostip.info/use.html)이며 [CORS] (http://en.wikipedia.org/wiki/Cross-origin_resource_sharing)를 지원합니다. 그러나 Internet Explorer 9를 포함한 일부 브라우저는 CORS를 지원하지 않습니다. – hippietrail

-1

자바 스크립트에서 외국 도메인을 호출 할 수 없습니다. 이것은 확실히 문제입니다. 원격 페이지를 가져 오는 프록시 스크립트를 서버에서 설정하거나 위에서 언급 한 JSONP를 구현하는 것보다 서비스를 찾아야합니다.

+0

최신 브라우저를 사용하여 JavaScript에서 외국 도메인을 호출 할 수 있습니다. 대부분은 CORS를 지원하고 http : // api.hostip.info/get_json.php는 CORS도 지원합니다. – hippietrail

0

XML 데이터에 대해 도메인 간 호출을 할 수 없습니다. YUI GET Utility 또는 JQuery와 경유를 사용

http://ipinfodb.com/ip_query.php?ip=999.999.999.999&output=json 

을 수행 할 수 있습니다 크로스 도메인 호출 : 다른 사이트는 JSON 인터페이스를 제공합니다.

2

Google의 AJAX API를 사용하는 경우 교차 도메인 호출이 필요하지 않으므로 Client Location 기능을 사용하여 위치를 쉽게 찾을 수 있습니다. 다른 사람들이 지적으로

if (google.loader.ClientLocation) { 
    var lat = google.loader.ClientLocation.latitude; 
    var lon = google.loader.ClientLocation.longitude; 
    ... 

그렇지 않으면, 당신은 JSONP를 제공하는 서비스가 필요합니다 또는 당신은 당신의 데이터를 얻기 위해 자신의 서버에 프록시를 작성해야합니다.

관련 문제