ERLEDIGT
JA
JA
ANTWORTEN
24
24
ZUGRIFFE
1378
1378
EMPFEHLEN
-
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ß
-
Moin,
alleine mit JS ist dies nicht machbar, da man damit keinen Zugriff auf Quellen von fremden Servern hat.
-
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?
-
17.10.09 12:34 #4
- Registriert seit
- May 2007
- Ort
- Dresden (Sachsen)
- Beiträge
- 1.960
Ob das jetzt eine Startseite ist oder nicht, ist in dem Fall egal. Leg dir einfach eine andere Datei an die folgendes beinhaltet:
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!PHP-Code:<?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);
}
}
?>
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.Geändert von einfach nur crack (17.10.09 um 12:45 Uhr)
Ich mag:- positive Bewertungen meiner Beiträge
- ein Danke für meine hilfreichen Beiträge
Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX
... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.
-
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...
so gehts. Aber wie bekomme ich die daten jetzt mit ajax ausgelesen? Ich habe die daten jetzt mit JSOn bearbeitet:PHP-Code:<?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'];
?>
Bekomme das nicht ganz hin?PHP-Code:{"latitude":"xx.08\n","longitude":"xx.81"}
HTML-Code: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.Geändert von webbudda (17.10.09 um 23:46 Uhr)
-
-
Danke. Jetzt habe ich ein timing Problem. Die Variablen brauchen eine Zeit zum Abrufen. Kann man sowas umgehen?.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
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?Geändert von webbudda (18.10.09 um 12:51 Uhr)
-
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.
-
Sind sie ja scheinbar nicht, siehe oben.
Und wenn mal keine antwort kommt? Klappt ausserdem nicht, dann sind die variablen null.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.Geändert von webbudda (18.10.09 um 14:45 Uhr)
-
-
Die Variablen nehmen den richtigen Wert ja an. Leider aber nur wenn ich ein alert VOR der ausgabe setzte und dann 2 seklunden warte, bevor ich die box weg klicke. danach haben die variablen den richtigen wert.
deshalb habe ich auch oben die ausgabe gepostet. 2 wird vor 1 ausgegeben. das sagt eigentlich alles...timing.
setze ich den dritten parameter auf false sind die variablen immer null.Geändert von webbudda (18.10.09 um 16:17 Uhr)
-
Ahso, probiere es mal ohne onreadystatechange...das ist bei synchronem Request nicht nötig und kann je nach Browser Probleme verursachen:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
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?"+new Date().getTime(), false); http.send(); eval('objekt='+http.responseText); long_pos=objekt.longitude; lat_pos=objekt.latitude; } alert(lat_pos+'\n'+long_pos);
-
wieso das +new Date().getTime() hinter dem aufruf?
-
Um sicherzugehen, dass da nichts aus dem Cache geladen wird.
-
Firefox 3.0.14 (ich weiss, ist nicht der neuste, aber trotzdem) springt vor dem http.send();
scheinbar raus. Der IE 8 schluckts auch nicht.Geändert von webbudda (24.10.09 um 15:31 Uhr)
Ähnliche Themen
-
[C++] String aus WebSeite auslesen.
Von Golumserbe im Forum C/C++Antworten: 6Letzter Beitrag: 19.11.10, 08:16 -
Javascript (für Dashboard-Widget) fremde Webseite auslesen
Von zeroize im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 03.05.09, 22:37 -
Aktuelle Webseite auslesen
Von ronaldo84 im Forum Visual Basic 6.0Antworten: 20Letzter Beitrag: 15.02.06, 14:15 -
E-Mail Spamsicher auf Webseite (Per javascript ersetzen?)
Von C-H im Forum Javascript & AjaxAntworten: 6Letzter Beitrag: 22.11.05, 18:44 -
Webseite auslesen
Von zoetti1 im Forum C/C++Antworten: 3Letzter Beitrag: 16.05.05, 13:45





Zitieren


Login





