Utilizzando ExtJS 2.2.1, ho un elemento contenitore che dovrebbe caricare un pezzo di codice HTML dal server utilizzando:ExtJS: autoLoad non funziona in IE
autoLoad: { url: 'someurl' }
Questo funziona bene in Firefox , ma per IE7 questo si traduce in un errore di sintassi in ext-all-debug.js alla riga 7170:
this.decode = function(json){
return eval("(" + json + ')');
};
ho fissato questo trasformando tale funzione in questo:
this.decode = function(json){
return eval('(function(){ return json; })()');
};
Quindi il AutoLoad funziona bene in entrambi i browser, ma poi ci sono alcuni bug strani e inoltre, davvero non si vuole sistemarlo nella libreria ExtJS in quanto non è possibile tenerlo (specialmente nel file ext-all.js minificato che è come mezzo megabye di javascript su una singola riga).
Non sono stato in grado di trovare molto su questo bug.
Variazioni che ho provato:
// With <script> tags around all the HTML
autoLoad: { url: 'someurl', scripts: true }
// With <script> tags around all the HTML
autoLoad: { url: 'someurl', scripts: false }
e viceversa senza le <script>
tags. Non c'è alcun Javascript nel codice HTML, ma dovrebbe essere possibile, perché alla fine utilizzeremo Javascript nel codice HTML restituito.
Il problema non è nell'HTML perché anche con l'HTML più semplice possibile, l'errore è lo stesso.
UPDATE - Risposta a Donovan:
Il caso più semplice in cui questo è usato è questo:
changeRolesForm = new Ext.Panel({
height: 600,
items: [{ autoScroll: true, autoLoad: WMS.Routing.Route("GetRolesList", "User") + '?userID=' + id}]
});
Non v'è alcun archivio dati in questione qui. Anche il tipo di risposta è text\html
, non JSON, quindi non può essere confuso neanche. E come detto, sta funzionando bene in Firefox, e in Firefox, esegue anche la stessa funzione eval
, ma senza l'errore. Quindi non è che Firefox segua un diverso percorso di esecuzione, è lo stesso, ma senza l'errore su eval
.
Nessuna delle "risposte" risolve il fatto che l'errore si verifica solo in IE. Stiamo ancora vivendo la stessa cosa in Ext 3.3.0. –
Ciao Julian, se guardi in FireBug, cosa viene restituito dal server? Ext effettua una chiamata al server dopo di che muore in IE, sarebbe utile se la richiesta e la risposta sono pubblicate (comprese le intestazioni) –
Io raccomando di usare Charles Proxy per ottenere le informazioni che Rob è dopo, dal momento che gli strumenti di debug di IE sono orribili –