Ext.urlEncode

2008.10.30. 08:58 stack

Valahogy mindig akkor hal le az extjs.com, amikor olyan bug-ba ütközök, amelyet valószínűleg már több száz másik ExtJS használó is megtalált, és a fórumban számtalan megoldást kínáltak a probléma orvoslására.
Az url-ek elkódolását nagyon olcsón oldották meg az ExtJS-ben.

var obj = {
    str:'Hello',
    obj: {
        foo: 'Bar',
        foobar: {
            szia:'világ!',
            hello:'world'
        }
    },
    szamok: ['egy', 'ketto', 'harom'],
    ures: []
}
console.log( Ext.urlEncode( obj) );
// str=Hello&szamok=egy&szamok=ketto&szamok=harom&ures

A tömböt rosszul, az objektumot sehogy, a stringet jól jelenítette meg, a várt eredmény ez lenne:

// str=Hello&obj[foo]=Bar&obj[foobar][szia]=vil%C3%A1g!&obj[foobar][hello]=world&szamok[]=egy&szamok[]=ketto&szamok[]=harom&ures[]=

Mivel nagyobb problémát okozott volna a szerver oldalon módosítani a kódot, kénytelen voltam az Ext.urlEncode -t felülírni:

Ext.apply(Ext,{
    urlEncode: function(o, pre){
        if(!o){
            return "";
        }
        var buf = [];
        for (var key in o) {
            if ( o.hasOwnProperty(key) ) {
                var ov = o[key], k = encodeURIComponent(key);
                if(typeof pre != "undefined"){
                    k = pre+'['+k+']';
                }
                var type = typeof ov;
                if(type == "undefined"){
                    buf.push(k+"=");
                }else if(type != "function" && type != "object"){
                    buf.push(k+'='+encodeURIComponent(ov));
                }else if(Ext.isArray(ov)){
                    if (ov.length){
                        for(var i = 0, len = ov.length; i < len; i++) {
                            buf.push(arguments.callee({'':ov[i]},k));
                        }
                    } else {
                        buf.push(k+"[]=");
                    }
                } else if(type == "object"){
                    for (var i in ov) {
                        if ( ov.hasOwnProperty(i) ) {
                            var t = {}; t[i] = ov[i];
                            buf.push(arguments.callee(t,k));
                        }
                    }
                }
            }
        }
        return buf.join("&");
    }
});

Szólj hozzá!

Címkék: override urlencode

A bejegyzés trackback címe:

https://extjs.blog.hu/api/trackback/id/tr63739932

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.

ExtJS blog, mi ez?

Az ExtJS egy JavaScript keretrendszer, melyet a blog írója elfogultan a legjobbnak tart, és ez a blog olyan apróságok gyűjteménye, melyek ExtJS használata közben felmerültek, eszébe jutottak...

Címkék

ajax (4) alignto (1) állás (3) analytics (1) anchorto (1) android (4) animate (2) array (9) auto (1) back button (1) beautifier (1) beforeevent (1) benchmark (1) blur (1) budapest.js (1) button (1) canvas (1) capture (1) case sensitive (1) center (1) change (1) cikkajánló (1) class (2) closure compiler (1) collapse (1) combobox (3) comment (1) console.log (2) contextmenu (2) core (2) count (1) css (15) csv (1) dataview (1) date (4) datefield (3) datepicker (1) debug (1) doksi (1) dragdrop (1) easing (1) eclipse (1) editor (1) element (5) error (5) eval (2) event (1) fejtörő (1) field (2) fieldset (1) filter (1) firefox (4) firefox extension (2) focus (3) fonts (1) fun (1) function (1) google (2) google chrome (1) grayscale (1) grid (4) group contact (1) header (3) height (2) hidden (1) hirek (2) history (1) htaccess (1) html5 (2) htmleditor (2) https (1) icon (3) id (2) ie (2) ie6 (1) ie9 (1) iframe (3) image (2) indexof (1) javascript (1) jquery (2) jslint (2) jsmin (1) json (7) keymap (1) kipróbálom (2) könyvajánló (2) label (1) layout (1) lint (1) log (1) loop (1) magyar (2) mandelbrot (1) mask (1) math (1) maxlength (1) mistake (1) mysql (5) napi szívás (16) nem extjs (12) node (1) nth child (1) number (1) off (5) offline (1) operator (1) override (20) pagesize (1) paging (2) panel (2) php (7) picker (1) plugin (3) pozicionálás (2) preload (1) print (1) propertygrid (1) pseudo (3) readonly (2) record (1) regexp (1) replace (1) resizable (1) rotate (1) round (1) scale (1) sencha touch (2) server (1) shuffle (1) slider (1) sort (3) sortable (1) store (2) string (7) sum (1) tabchange (1) tabpanel (1) tab key (2) tdd (1) template (1) textarea (2) textfield (1) textitem (1) theme (2) throw (1) timer (1) timestamp (1) title (2) toggle (1) toolbar (6) tools (1) total count (1) transparent (1) tree (1) treenode (1) trigger (1) truncate (1) try (1) ucfirst (1) undefined (2) unique (1) unload (1) urlencode (1) utf8 (2) verzió (1) video (1) viewer (1) viewport (2) visible (2) vtype (1) window (2) xtype (1) zindex (2)

Extjs.blog.hu - RSS

Kérdés?