2011-05-10 2 views
0

Je rencontre un problème où certaines valeurs retournées par le serveur jetteront un "code 12" dans firebug et provoqueront un message flottant de "Chargement" dans extjs qui ne disparaîtra jamais page. Ce problème ne se produit que dans Firefox. J'ai trouvé que je peux reproduire le problème de façon cohérente en mettant un "&" dans l'une des valeurs qui vont dans le GridPanel, mais d'autres valeurs telles que le formatage de texte enrichi parfois jetteront le code 12. J'ai trouvé que si je vais dans la page en opéra, je peux corriger les données dans mon panneau de grille et l'enregistrer sur le serveur. Puis rafraîchissant la page firefox, tout redevient comme il était. Y a-t-il un délimiteur ou quelque chose que je peux mettre autour de ces valeurs pour éviter que cela n'arrive? Je extjs peut me laisser enregistrer quelque chose sur le serveur, je ne comprends pas comment le récupérer provoque un problème.Firefox jette une erreur dans extjs 2.2 JsonStore

En Firebug:

An invalid or illegal string was specified" code: "12 
[Break On This Error] (function(){var D=Ext.lib.Dom;var E=Ex...El.cache;delete El._flyweights})})(); 

Exemple JSON retourné du serveur (notez le "200 & 5" provoque une erreur, "200 et 5" fonctionnera très bien)

{"summaryList":[{"shot":"","seq":"200 & 5","active":9998,"tag":"","file":"","id":"137943329348950905822686689581598049837","quick_comments":"","comments":"","priority":"","asset":"","prod":"dragon","type":"","store":"","submitby":"jstratton","status":"ip","format":"","date":"2011_5_10","approval":"hofx_pm","name":"jstratton","notes":"","uri":"137943329348950905822686689581598049837","dept":"fx","time":"10 May 2011 13:56:30","order":2}], "success":true} 

Le magasin JSON et le

GridPanel
var summaryStore = new Ext.data.JsonStore({ 
    url: 'summaryList', 
    root: 'summaryList', 
    baseParams : { 
     show: showSelect.getValue(), 
     dept: deptSelect.getValue(), 
     approval: typeSelect.getValue(), 
     roundDate: roundDateField.getValue(), 
     user: summaryUser.getValue(), 
    }, 
    autoLoad: true, 
    fields: [], 
}); 

var summaryGrid = new Ext.grid.GridPanel({ 
    store: summaryStore, 
    columns : [], 
    // turn off multi-selection for now 
    tbar : [activeButton, 
      removeButton, 
      ' ', 
      exportToSpreadsheetButton, 
      refreshButton, 
     ], 
    renderTo: 'summaryTab', 
    autoHeight: true, 
    loadMask: {msg: 'Loading information. Thank you for your patience.'}, 
    autoExpandColumn: 'comments', 
    autoSizeColumns: true, 
    ddGroup: 'summaryGridDD', 
    enableDragDrop: true, 
    viewConfig: { 
     forceFit: true, 
    }, 
    titleCollapse : true, 
    collapsed: false, 
    stripeRows: true, 
    title: 'Summary', 
    frame: true, 
}); 

Répondre

0

Votre '&' est placé di rectement dans le HTML, vous devez HTML échapper votre contenu.

+0

Je vois des erreurs d'affichage lorsque je tape dans des panneaux, donc demander aux utilisateurs d'échapper eux-mêmes aux choses n'est pas pratique. – voodoogiant

+0

C'est pourquoi vous devez vous échapper du contenu! –

Questions connexes