AJAX-Alternative zu XML oder JSON in Response

Parse einen in der Response gesendeten QUERY_STRING vom Type application/x-www-form-urlencoded mit JavaScript

Nach der aktuellen XHR-Spezifikation kann der mit der Response empfangene Datentype mit xhr.responseType = 'text'; beispielsweise festgelegt werden. Darüber hinaus sendet aber auch der serverseitige Prozess einen Response-Header mit der Angabe eines bestimmten Content-Type. Betrachte das Stück CODE untenstehend:

    var xhr = new XMLHttpRequest();
    xhr.open('PUT', '/queryparse.html', true);
    xhr.onload = function(e){
        console.log(e.target.getResponseHeader('Content-Type'));
                   /* xhr  */
    }
    xhr.send('asdf');

Das zeigt, wie dieser Response-Header in der Callback-Funktion ermittelt werden kann. Abhängig vom Wert dieses Headers kann nun clientseitig der Parser aufgerufen werden, der genau für diesen Content-Type bestimmt ist. Mit diesem Content-Type ergeben sich Schlüssel-Werte-Paare, wobei die Werte mehrerer gleichnmamiger Schlüssel ein Array ergeben. Untenstehend eine erprobte Funktion zum Parsen eines QUERY_STRING:

    function qparse(query){
        var param = {};
        var pairs = query.split(';');
        for (var i = 0; i < pairs.length; ++i){
            var [key, val] = pairs[i].split("=");
            param[key] = param[key] ? param[key] : [];
            param[key].push(decodeURIComponent(val));
        }
        return param;
    }

Eine zu diesen Algorihmus passende Datenstruktur sieht so aus:

    $struct = {
        foo   => 'asdf',
        bar   => 123,
        names => ['foo','bar','boo']
    };

was sehr vielen Anforderungen Genüge tut.


Anbieter: nmq​rstx-18­@yahoo.de, die Seite verwendet funktionsbedingt einen Session-Cookie und ist Bestandteil meines nach modernen Aspekten in Perl entwickelten Frameworks.