2009-08-26 47 views
2

這可能是一個非常愚蠢的問題。我正在嘗試使用由http://www.hostip.info/use.html提供的api來根據他們的IP地址查找用戶地址的地理位置。我用以下代碼與jquery結合使用:地理位置使用主機IP與JavaScript

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

不幸的是,這似乎並不奏效。警報永遠不會觸發,所以我認爲這個調用永遠不會返回。有沒有人做過這個?由於

回答

4

我不認爲調用它們是成功的。跨域限制可能會阻止您閱讀結果數據。如果hostip提供了JSONP API,那可以使用,但我沒有在他們的網站上看到任何提及。

+0

嘛[主機IP提供了一個JSON API(http://www.hostip.info/use.html),它支持[CORS(http://en.wikipedia.org/wiki/Cross-origin_resource_sharing)但某些瀏覽器(包括Internet Explorer 9)不支持CORS。 – hippietrail 2012-09-24 12:37:42

-1

您不能從javascript國外域調用。這絕對是問題所在。您需要在您的服務器上爲您提供遠程頁面的代理腳本,或者找到一個服務,而不是像上面提到的那樣實現JSONP。

+0

您現在可以使用現代瀏覽器從JavaScript調用外部域。他們大多支持'CORS'和'http:// api.hostip.info/get_json.php'也支持'CORS'。 – hippietrail 2012-08-01 11:06:37

0

你無法對XML數據的跨域調用。其他網站提供一個JSON接口:使用YUI GET Utility或通過JQuery

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

,您可以跨域調用。

2

如果你使用谷歌的AJAX API,那麼它真的很容易使用他們Client Location功能獲得位置 - 這不需要任何跨域調用。

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

否則,正如其他人所指出的那樣,你需要提供JSONP服務或你需要編寫自己的服務器上的代理服務器獲取數據給你。