J'utilise treepanel et custom treeloader et j'appelle la requête ajax lorsque je clique sur le nœud. Il fonctionne bien à la fois dans IE et FF.IE 8 coupe partielle de mon retour de données JSON du service WCF
Mais aujourd'hui, nous avons découvert que si le nœud ne possède qu'un seul enfant (retourner une seule base d'enregistrement sur l'identifiant du nœud parent), IE n'affiche pas le nœud enfant. La même chose se produit dans le magasin de Combo aussi bien si le service renvoient seulement un reocrd.
Chose très intéressante, c'est que j'essaie de déboguer avec Fildder. donc je dois mettre "." point dans mon url "http://localhost {.}: 1234/then Il fonctionne très bien pour les deux arbres et combo
est ici le retour de format JSON de FF et Firebug code:..
{"result":[{"href":"..\/EMP\/EmployeeSearch.aspx","iconCls":"","id":"8c362443-7bb3-427e-910c-87b391c6abf5","leaf":true,"text":"Employees"}]}
Voici la retrun chaîne JSON corrompu de l'IE en utilisant l'outil de développement code:.
{"result":[{"href":"..\/EMP\/E"
Mon Override TreeLoader
Ext.override(Ext.tree.TreeLoader, {
requestData: function (node, callback) {
if (this.fireEvent("beforeload", this, node, callback) !== false) {
this.transId =
Ext.Ajax.request({
method: this.requestMethod,
url: this.dataUrl || this.url,
success: this.handleResponse,
failure: this.handleFailure,
scope: this,
argument: { callback: callback, node: node },
params: Ext.encode(this.getParams(node)),
//jsonData: { node: node },
headers: this.header || { 'Content-Type': 'application/json;charset=utf-8' }
});
} else {
// if the load is cancelled, make sure we notify
// the node that we are done
if (typeof callback == "function") {
callback();
}
}
}
, processResponse: function (response, node, callback) {
var json = response.responseText;
/*added to remove result wrapper from JSON*/
try {
var obj = Ext.decode(json);
var o = obj.result;
node.beginUpdate();
for (var i = 0, len = o.length; i < len; i++) {
var n = this.createNode(o[i]);
if (n) {
node.appendChild(n);
}
}
node.endUpdate();
if (typeof callback == "function") {
callback(this, node);
}
} catch (e) {
this.handleFailure(response);
}
}
} );