Timeout Funktion für jQuery Ajax / JSONP Requests

Gestern stand ich vor dem Problem, dass ich bei einem jQuery Ajax Request mit JSONP einen Timeout einbauen wollte. Alles kein Problem – man muss einfach nur den Parameter “timeout” gefolgt von einem Millisekunden Wert beim Request-Zusammenbau angeben. Jedoch wollte ich auch eine Funktion einbauen, die dem User mitteilt, dass seine Anfrage vom Server nicht beantwortet werden konnte. Prinzipiell ist dies auch mit dem jQuery Ajax Call möglich, jedoch nicht, wenn man JSONP verwendet. Es gibt aber den Umweg der allgemeinen Ajax Konfiguration, mit der man trotzdem einen Timeout und auch eine Fehlerbehandlung implementieren kann.

Nachdem ich mir aus der jQuery Doku und vielen Forenbeiträgen die einzelnen Details zusammengetragen habe, möchte ich diese hier einfach mal in gebündelter Form loswerden:

$.ajaxSetup({
    timeout: 10000,
    "error":function(XMLHttpRequest,textStatus, errorThrown) {
        if(errorThrown == "timeout") {
            alert("Ups, wir haben einen Timeout...");
        }
    }
});

Dieses Stückchen Code ist eigentlich alles, was man dazu benötigt. Führt es einfach aus, bevor der erste Ajax Call abgesetzt wird. Doch gehen wir das einfach mal einzeln durch.

$.ajaxSetup

dient der allgemeinen Konfiguration von Ajax Calls. Man kann innerhalb von $.ajaxSetup jeden Parameter verwenden, der auch bei $.ajax verwendet werden kann. Setzt man Parameter mit $.ajaxSetup, so können diese immer innerhalb des eigentlichen $.ajax Calls überschrieben werden.

Mit

timeout: 10000

setzen wir einen Timeout von 10 Sekunden. Diesen Wert kann man bei jedem einzelnen Call auch nochmal extra überschreiben.

Und am Schluss implementieren wir mit

"error":function(XMLHttpRequest,textStatus, errorThrown) {
        if(errorThrown == "timeout") {
            alert("Ups, wir haben einen Timeout...");
        }

unsere Fehlerbehandlung. Die erstellte Methode fängt dabei alle Fehler, die bei einem Ajax Call entstehen, ab. Daher habe ich an dieser Stelle auch den if-Block eingebaut, der dediziert nur meinen Timeout Fehler abfängt. Weiter Fehlernamen sind: “error”, “abort”, und “parsererror”. Im XLMHttpRequest Objekt bekommt man das Request Objekt des Ajax Calls mitgeliefert und kann so herausfinden, um welchen Call es sich eigentlich handelt.

Durch die Verwendung von $.ajaxSetup haben wir zum einen das Timeout Verhalten von Ajax Calls an einer zentralen Stelle konfiguriert, zum andern haben wir über diesen Umweg auch die Funktionalität für JSONP Requests überhaupt erst ermöglicht.

Irena Sendler

Irena Sendler. 1910-2008

Eine 98 Jahre alte deutsche Frau namens Irena Sendler starb kürzlich. Während des zweiten Weltkriegs arbeitete Irena im Warschauer Ghetto als Sanitär- / Abwasser-Spezialistin. Irena schmuggelte jüdische Kinder heraus; Säuglinge im Boden ihrer Werkzeugkiste und ältere Kinder in einem Sack, den Sie in den Kofferaum ihres Lastwagens trug. Sie hatte einen Hund, den sie darauf trainiert hatte zu bellen, wenn Soldaten der Nazis sie aus dem Ghetto herein und heraus ließen. Die Soldaten wollten mit dem Hund nichts zu tun haben und das Bellen überdeckte die Geräusche der Kinder. Irena schmuggelte 2500 Kinder aus dem Ghetto heraus. Schließlich wurde sie erwischt die Nazis brachen ihr beide Beine, Arme und verprügelten sie schwer. Irena führte Aufzeichnungen der Namen all der Kinder, die sie herausgeschmuggelt hat und verwahrte sie in einem Glas, begraben unter einem Baum in ihrem Garten. Nach dem Krieg versuchte sie, alle Eltern der Kinder zu finden, die möglicherweise überlebt haben um einige Familien wieder zu vereinen. Die meisten jedoch wurden getötet. Sie half den Kindern in Pflegefamilien aufgenommen oder adoptiert zu werden.

Im Jahre 2007 wurde sie für den Friedensnobelpreis vorgeschlagen. Sie wurde nicht ausgewählt. Den Nobelpreis gewann Al Gore – für einen Diavortrag über die Globale Erwärmung.

Wir werden darüber bloggen. Für immer.

Aus dem Englischen übersetzt via http://coernel.soup.io/

A 98 year-old German woman named Irena Sendler recently died. During WWII, Irena worked in the Warsaw Ghetto as a plumbing/sewer specialist. Irena smuggled Jewish children out; infants in the bottom of the tool box she carried and older children in a burlap sack she carried in the back of her truck. She also had a dog in the back that she trained to bark when the Nazi soldiers let her in and out of the ghetto. The soldiers wanted nothing to do with the dog, and the barking covered the kids’ and infants’ noises. Irena managed to smuggle out and save 2500 children. She eventually was caught, and the Nazis broke both her legs, arms and beat her severely. Irena kept a record of the names of all the kids she smuggled out and kept them in a glass jar buried under a tree in her backyard. After the war, she tried to locate any parents that may have survived and reunited some of the families. Most had been killed. She helped those children get placement into foster family homes or adopted.

In 2007 Irena was up for the Nobel Peace Prize. She was not selected. Al Gore won – for a slide show on Global Warming.

will always reblog this. always.

Foto: Mariusz Kubik

Ich habe ausnahmsweise den Text direkt übernommen – denn besser hätte ich es nicht formulieren können. Wäre toll, wenn ihr das hier weiter verbreitet – diese Frau hat es echt verdient, zumindest auf diesem Wege geehrt zu werden, wenn die Deppen des Friedensnobelpreises es schon nicht geschafft haben…

via mediengestalter.cc

Der Held meiner Jugend

Leute! Ich habe heute tatsächlich Bud Spencer live gesehen und mir eine signierte Version seiner Biographie geholt. Damit ist ein Kindheitstraum in Erfüllung gegangen.

20111130-222114.jpg

Leider waren noch ca. 2000 andere Leute da, also ging alles sehr schnell. Aber: Bud hat fleißig signiert und zeigte keine Schwäche – denn er liebt seine Fans einfach, so wie sie ihn lieben. Ein wahrlich toller Mensch!

[Quicktip] Sicheres surfen über ssh unter OSX

Stellt euch folgende Situation vor: ihr sitzt in einem Caffé und möchtet gern das dort vorhandene, offene Wlan nutzen. Das ist natürlich sicherheitstechnisch nicht gerade optimal, da eure Kommunikation so von jedem Script-Kiddie abgehört werden kann.

Sofern ihr einen Server irgendwo im Internet habt, auf dem ihr euch per SSH einloggen könnt, gibt es einen sehr leichten Weg, eure Verbindung abzusichern:

Im Terminal

ssh -ND 9999 benutzername@server.de

eingeben (an Stelle von 9999 könnt ihr natürlich auch einen anderen freien Port verwenden). Sofern ihr auf dem Server bereits euren public ssh Key hinterlegt habt, dann könnt ihr das Terminal nun minimieren (nicht schließen!). Wenn nicht, werdet ihr nach eurem Passwort gefragt. Eintippen, Enter drücken und nun das Fenster minimieren.

Nun habt ihr einen laufenden Socks Proxy. Richtet entweder direkt im Browser oder in den Netzwerkeinstellungen den Proxy

Server: localhost
Proxy: 9999 (bzw. den von euch gewählten Port)

ein. Ab sofort surft ihr nun über einen sicheren Kanal zu eurem Server und erst dann ins Netz.

[Quicktip] Wake on Lan (WOL) über das Internet mit einem Netgear WNR2000 Router

Leider ein nicht so gut dokumentiertes Feature, wenn man einen Netgear WNR2000 Router verwendet. Das Teil hat nämlich die Möglichkeit, dass man über das Internet ein Gerät im Heimnetzwerk per WOL (Wake on Lan) einschalten kann. Und das geht so:

  • In den Router Adminbereich einloggen
  • Zum Punkt “Port Forwarding/Port Triggering” gehen
  • “Add Service” (bzw. “Custom Service” oder “Eigener Service”) Button drücken
  • Einen beliebigen Namen für die Weiterleitung eintragen
  • TCP/UDP eingestellt lassen
  • bei “Startport” und “Endport” eine “7” eintragen
  • bei IP die IP des Zielrechners im Heimnetzwerk eintragen
  • “Apply” drücken
  • das Gleiche für den Port “9” wiederholen
  • fertig

Eure Wake on Lan App, mit der ihr den Start durchführen wollt, muss WOL über das Internet unterstützen. In der App müsst ihr die Mac Adresse der Netzwerkkarte eures Zielrechners eintragen, dann die aktuelle IP eures Routers (evtl. DynDNS verwenden) und den Port 9. Wenn alles korrekt eingetragen ist, solltet ihr den Rechner so starten können.

Eine sehr gute WOL App für das iPhone ist übrigens “Net Status” .

via portforward.com