2009-08-26 23 views
2

Dies ist wahrscheinlich eine sehr dumme Frage. Ich versuche, eine Geolocation zu tun, um eine Benutzeradresse zu finden, die auf ihrer IP-Adresse basiert, die die API verwendet, die von http://www.hostip.info/use.html bereitgestellt wird. Ich benutze dies in Verbindung mit jquery mit dem folgenden Code:Geolokalisierung mit hostip mit Javascript

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

Leider scheint dies nicht zu funktionieren. Die Warnung wird nie ausgelöst, daher nehme ich an, dass der Aufruf nie zurückkehrt. Hat jemand das schon mal gemacht? Dank

Antwort

4

Ich glaube nicht, dass der Anruf an sie erfolgreich ist. Domänenübergreifende Einschränkungen verhindern wahrscheinlich, dass Sie die Ergebnisdaten lesen können. Wenn hostip eine JSONP API anbieten würde, wäre das brauchbar, aber ich habe auf ihrer Seite keine erwähnt.

+0

Well [hostip bietet eine JSON-API] (http://www.hostip.info/use.html) und unterstützt [CORS] (http://en.wikipedia.org/wiki/Cross-origin_resource_sharing), Einige Browser, einschließlich Internet Explorer 9, unterstützen jedoch CORS nicht. – hippietrail

-1

Sie können keine Anrufe an fremde Domänen von Javascript machen. Das ist definitiv das Problem. Sie müssen entweder ein Proxy-Skript auf Ihrem Server einrichten, das entfernte Seiten für Sie abruft, oder einen Dienst finden, der JSONP wie oben beschrieben implementiert.

+0

Sie können jetzt mit modernen Browsern von JavaScript aus auf fremde Domains zugreifen. Die meisten von ihnen unterstützen 'CORS' und' http: // api.hostip.info/get_json.php' unterstützt auch 'CORS'. – hippietrail

0

Sie können keine Cross-Domain-Anrufe für XML-Daten. Andere Websites bieten eine JSON-Schnittstelle:

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

, die Sie können domänenübergreifenden Aufruf der YUI GET Utility oder über JQuery verwenden.

2

Wenn Sie die Google AJAX-API verwenden, ist es sehr einfach, mithilfe der Client Location-Funktion den Standort zu ermitteln. Hierfür sind keine domänenübergreifenden Anrufe erforderlich.

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

Ansonsten, wie andere haben darauf hingewiesen, benötigen Sie einen Dienst, der JSONP bietet oder Sie einen Proxy auf Ihrem eigenen Server schreiben müssen, um die Daten für Sie zu erhalten.