{lang: 'hu'}

Egészen sokat debuggoltam ezt a hibát és így is csak a szerencsének köszönhető a hiba okozójának leleplezése. Az alapprobléma az, hogy egyes XHR kérések után megjelenik a “response is undefined” hibaüzenet annak ellenére, hogy formailag és tartalmilag is helyes JSON válasz érkezik. A probléma konkrét okát nem sikerült megfejtenem, nem is kísérelném meg az extjs 22 ezer soros kódjából kibogozni. 🙂 A probléma ott van, hogy ha több XHR kérést futtatunk egyszerre, akkor egymás válaszát vagy felülírják vagy kitörlik. Tudom, ez így elég gáz! De miután limitáltam az egyszerre futható XHR kérések számát 1-re azonnal eltűntek az addig konstansan jelentkező hibák, tehát elég valószínű, hogy erről van szó. Remélem sikerült megmenteni az olvasót pár órányi/napnyi idegeskedéstől!

A probléma saját kódból eredt, leírás a kommentek között.

3 Responses to QuickTip: “response is undefined” hibaüzenet (ExtJS 4.0.7)
  1. Szia, minta alkalmazást nem tudnál összedobni, ahol jelentkezik a hiba? Eddig én nem találkoztam hasonló hibával. Érdekelne, hogy milyen kérések akadhatnak össze…

    • Szia! Amint lesz rá időm összedobok egy mintakódot. Csatoltam egy képet a hibáról!

    • Felbukkant újra a hiba, most már akkor is, ha egyszerre csak egy request-et küldtem csak a szerver felé, így újabb nyomozásba kezdtem. Szerencsére rá is akadtam a megoldásra! A probléma a saját kódomból ered (részben), mégpedig azért, mert az ajax kérések számát manuálisan korlátoztam a következőképp: http://pastebin.com/AbbLQzyn . Na most itt látható, hogy ha több mint X (X === maxConcurrentRequests) kérés fut, akkor a kérés beállításait beteszi egy queue-ba, majd visszatér false-al. Ez ExtJS 3.X esetén egyszerűen leállította a kérést (mármint a “return false”) és semmi egyéb nem történt, azonban kiderült, hogy ExtJS 4 esetén ebben az esetben meghívja a callback függvényt (ext-all-debug-w-comments.js:27387), de mivel ilyenkor semmilyen válasz ugyebár még nincs, ezért response helyett egy undefined értéket ad át paraméterben. A stack trace alapján látszik, hogy mivel a response.success (ami gyakorlatilag nem is létezik) nem true, ezért próbál dobni egy exception-t, de ahhoz kéne egy olyan, hogy response.status és response.statusText, viszont mivel még a response változó sem definiált, ezért dob egy js errort. Nagyjából ennyi 🙂


[top]

Leave a Reply

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöljük.