Webseite mit Javascript auslesen

webbudda

Mitglied
Hallo,

ich möchte 2 Werte einer Webseite auslesen. Dabei handelt es sich um 2 Variablen von Koordianten des Einwahlpunktes:
Latitude:
Longitude:

Diese möchte Variablen (lat, long )ich für Google maps weiterverwenden, sofern diese von der Webseite erkannt werden also, wenn dort NICHT City: (Unknown city)
steht.

Webseite:
http://api.hostip.info/get_html.php?ip=&position=true

Bin da leider kein profi und hab auch nicht so richtig was gefunden.
Hat jemand eine idee?
Danke & gruß
 
Ahnte sowas. Das ist eine startseite (index.php). wird wohl nicht leicht das per php zu machen und dann die variablen an JS zu übergeben was?

Hat jemand eine Idee?
 
Ob das jetzt eine Startseite ist oder nicht, ist in dem Fall egal. Leg dir einfach eine andere Datei an die folgendes beinhaltet:
PHP:
<?php
$contents = file('http://api.hostip.info/get_html.php?ip=&position=true');

foreach($contents as $line) {
	if(strpos($line, 'Latitude') !== FALSE) {
		$data['latitude'] = (float) substr($line, 10);
	}
	elseif(strpos($line, 'Longitude') !== FALSE) {
		$data['longitude'] = (float) substr($line, 11);
	}
}
?>

So kannst du die Daten auslesen. Den Array kannst du dann wie du willst ausgeben und dann per AJAX auf die Seite deiner Wahl einlesen. Fertig!

EDIT: Arrays kannst du zum Beispiel mit JSON bearbeiten und dann mit beispielsweise dem Framework jQuery für JavaScript verständlich umformen. jQuery bietet dir auch JSON.
 
Zuletzt bearbeitet:
Oh danke für den Tipp.

Wenn ich die Seite aufrufe, bekomme ich im Skript und im Brwoser andere Werte. Ich vermute, der trackt die IP vom Server, wenn ich das per PHP aufrufe was...

PHP:
<?php

    $ip = "UNBEKANNT";
    if ($_SERVER["HTTP_CLIENT_IP"]) 
        $ip = $_SERVER["HTTP_CLIENT_IP"];
    else if($_SERVER["HTTP_X_FORWARDED_FOR"]) 
        $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
    else if($_SERVER["REMOTE_ADDR"]) 
        $ip = $_SERVER["REMOTE_ADDR"];

$contents = file("http://api.hostip.info/get_html.php?ip=".$ip."&position=true");

foreach($contents as $line) {
    if(strpos($line, 'Latitude') !== FALSE) {
        $data['latitude'] =  substr($line, 10);
    }
    elseif(strpos($line, 'Longitude') !== FALSE) {
        $data['longitude'] =  substr($line, 11);
    }
}

echo $data['longitude'];
echo "<br>";
echo $data['latitude'];

?>

so gehts. Aber wie bekomme ich die daten jetzt mit ajax ausgelesen? Ich habe die daten jetzt mit JSOn bearbeitet:
PHP:
{"latitude":"xx.08\n","longitude":"xx.81"}

Bekomme das nicht ganz hin?

HTML:
var http = null;
if (window.XMLHttpRequest) {
   http = new XMLHttpRequest();
} else if (window.ActiveXObject) {
   http = new ActiveXObject("Microsoft.XMLHTTP");
}
if (http != null) {
   http.open("GET", "getpos.php", true);
   http.onreadystatechange = ausgeben;
   http.send(null);
}

function ausgeben() {
   if (http.readyState == 4) {
       var rueckgabe = http.responseText;
       var objekt = eval("(" + rueckgabe + ")");
       
lat=?
long=?
		

        
   }
}


kann man das auch so programmieren, dass es erst weiter geht wenn der wert geholt ist bzw das nach einer gewissen zeit abgebrochen wird. wenn es weiter geht ohne das die werte schon da sind wäre unglücklich, dann bekomme ich wohl ein timing problem.
 
Zuletzt bearbeitet:
Danke. Jetzt habe ich ein timing Problem. Die Variablen brauchen eine Zeit zum Abrufen. Kann man sowas umgehen?.
Code:
var long_pos;
var lat_pos;
var http = null;
if (window.XMLHttpRequest) {
   http = new XMLHttpRequest();
} else if (window.ActiveXObject) {
   http = new ActiveXObject("Microsoft.XMLHTTP");
}
if (http != null) {
   http.open("GET", "getpos.php", true);
   http.onreadystatechange = ausgeben;
   http.send(null);
}

function ausgeben() {
   if (http.readyState == 4) {
       var rueckgabe = http.responseText;
       var objekt = eval("(" + rueckgabe + ")");       
 		lat_pos = objekt.latitude;
		long_pos = objekt.longitude;         
   alert("1");
   }
}

alert("2");
 	alert(lat_pos);
	alert(long_pos);

Ausgabe:
2
1
lat_pos
long_pos

Ohne die Messageboxen sind lat und long auch leer, weils n mom dauert bis die geholt sind. eine idee?
 
Zuletzt bearbeitet:
Wenn du die Variablen innerhalb von ausgeben() verwendest, oder nachdem diese Funktion aufgerufen wurde, sollten sie bekannt sein.

Optional könntest du den Request synchron vornehmen(3. Parameter von open() auf false)...allerdings würde der Browser dann bis zr Antwort unbenutzbar sein.
 
Wenn du die Variablen innerhalb von ausgeben() verwendest, oder nachdem diese Funktion aufgerufen wurde, sollten sie bekannt sein.

Sind sie ja scheinbar nicht, siehe oben.
Optional könntest du den Request synchron vornehmen(3. Parameter von open() auf false)...allerdings würde der Browser dann bis zr Antwort unbenutzbar sein.

Und wenn mal keine antwort kommt? Klappt ausserdem nicht, dann sind die variablen null.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück