Cross-domain Ajax

2013.06.02. 10:49 stack

Az Android WebView-ban futó alkalmazásunkban egyszerűen tudunk Cross-domain Ajax hívásokat használni a következő kiegészítéssel:

WebSettings webSettings = webView.getSettings();
webSettings.setAllowUniversalAccessFromFileURLs(true);

Természetesen az AndroidManifest.xml -ben meg kell adni az internet használati jogot:

<uses-permission android:name="android.permission.INTERNET" />

Lehetőségünk van ugyanerre az asztali böngészőnél is, a Chrome-ot a következő paraméterrel kell meghívni:

C:\Program Files\Google\Chrome>chrome.exe --disable-web-security

Szólj hozzá!

Címkék: ajax android google chrome sencha touch

Szerver oldali hibák megjelenítése

2012.01.07. 10:06 stack

Ha a szerver oldali hibákat nem kezeljük le külön, akkor nehézkes az Ajax hívások között megtalálni, hogy pontosan hol is vesztettük el az irányítást. IE alatt kifejezetten rémálom.
Nem várt elem: ')' a 4816-os sorban. Ha nem használtad még kellően sokat az ExtJS-t, akkor nem biztos, hogy beugrik ebből, hogy itt bizony JSON parser hiba lépett fel. :) A JSON hiba meg nem azért történt, mert a kliens ne tudná feldolgozni az JSON adatokat, hanem mert az adatok helyett valójában egy hibaüzenet érkezett.

Vegyünk egy egyszerű példát. Két szám hányadosát szeretnénk szerver oldalon kiszámolni. (hosszú gondolkodás után ez volt a legegyszerűbb példa:)

Kliens oldalon:

Ext.Ajax.request({
    url: 'osztas.php',
    params: {
        a: 6,
        b: 2
    },
    success: function (response) {
        var t = Ext.decode(response.responseText);
        Ext.Msg.alert('', t.a + ' / ' + t.b + ' = ' + t.hanyados);
    }
});

Szerver oldalon:

die(json_encode(array(
    'a' => $_REQUEST{'a'},
    'b' => $_REQUEST{'b'},
    'hanyados' => $_REQUEST{'a'} / $_REQUEST{'b'}
)));

Tökéletesen működő példaprogram. :)
Ám, ha a második paraméter helyére nullát írunk, akkor jönnek a problémák...

Először a szerver oldalt egészítsük ki:

Szólj hozzá!

Címkék: ajax server error

Ext.lib.Ajax.isWorking()

2010.03.18. 18:55 stack

Gyakran vannak olyan Ajax hívásaim, amelyek esetleges késleltetése nem okozna semmiféle problémát akkor, ha ezzel fontosabb műveleteket előnybe részesíthetünk. Például az, hogy félpercenként vizsgáljuk, hogy kaptunk-e új üzeneteket kevésbé fontos akkor, ha éppen mi szeretnénk küldeni egy üzenetet.

Ennek vizsgálatához szükségem volt egy olyan függvényre, amely megadja, hogy van-e most futó Ajax hívás. Először még az Ext.Ajax eseményeihez rendeltem hozzá egy számlálót, de ezt már az elején éreztem, hogy ágyúval verébre effektus.

Utána az Ext.lib.Ajax.isLoading(...) függvényt szerettem volna általánosítani. Ám eközben észrevettem, hogy az Ext.lib.Ajax.poll pont az, ami nekem kell. (ez egy olyan objektum, amelynek elemei egy-egy Ajax híváshoz tartozó setInterval elem, az Ajax hívás befejezésekor ExtJs verziótól függően az elem vagy törlődik, vagy null lesz) Tehát abban az esetben, ha létezik a poll objektumnak eleme, amely nem null, akkor létezik folyamatban lévő Ajax hívás, különben nem létezik.

Ext.lib.Ajax.isWorking = function () {
    for (var i in this.poll) {
        if (this.poll.hasOwnProperty(i) && this.poll[i] !== null) {
            return true;
        }
    }
    return false;
};

Szólj hozzá!

Címkék: ajax

is_ajax ()

2009.11.24. 23:24 stack

Szerver oldalon a lekérés fejlécéből állapítható meg, hogy Ajax hívásról van-e szó vagy sem:

function is_ajax () {
    return isset($_SERVER{'HTTP_X_REQUESTED_WITH'})
        and $_SERVER{'HTTP_X_REQUESTED_WITH'} === 'XMLHttpRequest';
}

1 komment

Címkék: ajax php header

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?