2009-08-26 6 views
2

Ceci est probablement une question très stupide. J'essaie de faire une géolocalisation pour trouver une adresse d'utilisateurs basée sur leur adresse IP en utilisant l'API fournie par http://www.hostip.info/use.html. J'utilise ceci en conjonction avec jquery avec le code suivant:Géolocalisation en utilisant hostip avec javascript

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

Malheureusement, cela ne semble pas fonctionner. L'alerte n'est jamais déclenchée, donc je suppose que l'appel ne retourne jamais. Est-ce que quelqu'un a déjà fait ça? Merci

Répondre

4

Je ne pense pas que l'appel à leur succès. Les limitations inter-domaines sont susceptibles de vous empêcher de lire les données de résultats. Si hostip offrait un JSONP API, ce serait utilisable, mais je n'en ai vu aucune mention sur leur site.

+0

Bien [hostip offre une API JSON] (http://www.hostip.info/use.html) et il prend en charge [CORS] (http://en.wikipedia.org/wiki/Cross-origin_resource_sharing), mais certains navigateurs, y compris Internet Explorer 9, ne prennent pas en charge CORS. – hippietrail

-1

Vous ne pouvez pas passer d'appels à des domaines étrangers depuis javascript. C'est définitivement le problème. Vous devez soit configurer un script proxy sur votre serveur qui récupère les pages distantes pour vous, soit trouver un service qui implémente JSONP comme mentionné ci-dessus.

+0

Vous pouvez désormais effectuer des appels à des domaines étrangers à partir de JavaScript à l'aide de navigateurs modernes. La plupart d'entre eux supportent 'CORS' et' http: // api.hostip.info/get_json.php' supporte aussi 'CORS'. – hippietrail

0

Vous ne pouvez pas effectuer d'appels interdomaines pour les données XML. D'autres sites offrent une interface JSON:

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

que vous pouvez appeler contre-domaine en utilisant le YUI GET Utility ou via JQuery.

2

Si vous utilisez l'API AJAX de Google, il est très facile d'obtenir l'emplacement en utilisant leur fonctionnalité Client Location - cela ne nécessite aucun appel entre domaines.

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

Sinon, comme d'autres l'ont souligné, vous aurez besoin d'un service qui fournit JSONP ou vous devrez écrire un proxy sur votre propre serveur pour obtenir les données pour vous.

Questions connexes