Martin Lantzsch
Software Entwickler
29. August 2013

ExtJS Store AJAX Proxy HTTP Basic Authorization

29. August 2013 - Geschrieben von Martin - Keine Kommentare

Um Daten von einem Webservice abzurufen, der mittels HTTP Basic Authorization gesichert ist muss dem AJAX Proxy ein Header mitgegeben werden, der die Base64 encodeten Zugangsdaten enthält. Dies habe ich bei meinem Store direkt in den Konstruktor geschrieben:

constructor: function(config) {
    this.proxy.headers = {
        'Authorization': 'Basic ' + window.btoa(config.username + ':' + config.password)
    };
    this.callParent(config);
}

im Gesamten dann etwa so:

Ext.define('Resi.stores.Mails', {
    proxy: {
        type: 'ajax',
        url: 'api/mails'
    },
    constructor: function(config) {
        this.proxy.headers = {
            'Authorization': 'Basic ' + window.btoa(config.username + ':' + config.password)
        };
        this.callParent(config);
    }
});

Die verwendete window.btoa ist leider nur in neuen Browsern verfügbar, sollten auch ältere Browser später diese Anwendung nutzen sollen, muss hier eine Base64 Bibliothek eingebunden werden.

var Mails = Ext.create('Resi.stores.Mails', { 
    username: 'Resi',
    password: 'Mein sicheres Passwort'
});

29. August 2012

ExtJS „Uncaught TypeError: Cannot read property ‚internalId‘ of undefined“

29. August 2012 - Geschrieben von Martin - Keine Kommentare

Mein ExtJS 4.1 TreeStore wollte einen Knoten partout nicht laden, es kam jedesmal folgender Fehler in der Chome debug Konsole:

Uncaught TypeError: Cannot read property 'internalId' of undefined

Dank der echt supertollen Dokumentation von ExtJS habe ich verzweifelt alle Parameter ausgetestet doch keiner half, beim Googlen bin ich auf diverse Foren gestossen, doch jedesmal gab es keine richtige Antwort. Doch dieser Blog Post hatte eine.

Die „id“ eines jeden Knotens muss einmalig sein! Das heißt, nicht nur auf einer Ebene, sondern auch in Unterebenen darf keine ID doppelt vorkommen! Das ist natürlich schwer, wenn ich aus zwei Datenbanktabellen mit jeweils einem Auto Increment meine Daten beziehe, denn

- parent[id=1]
-- sub[id=1]
-- sub[id=2]
-- sub[id=3]
- parent[id=2]
-- sub[id=4]

und schon habe ich die „[id=1]“ und „[id=2]“ doppelt. Abhilfe schafft z.B. wenn ich als Index „[id=parent-1]“ und „[id=sub-1]“ verwende. Sollte meine Anwendung mit diesen IDs Arbeiten, z.B. um weitere Abfragen auszuführen, kann ich dafür ein extra Feld verwenden.