Maison  >  Article  >  interface Web  >  Comment résoudre le problème selon lequel ExtJs ne peut pas transférer ou attribuer des valeurs de manière asynchrone ?

Comment résoudre le problème selon lequel ExtJs ne peut pas transférer ou attribuer des valeurs de manière asynchrone ?

零下一度
零下一度original
2017-06-26 09:49:041422parcourir
1. La méthode Ext.data.Store.load(); Le reCount obtenu de la manière suivante est toujours 0, car la valeur est attribuée avant l'exécution de la méthode d'arrière-plan. le magasin L'enregistrement n'a pas encore obtenu de valeur.
var testStore = nouveau Ext .data.GroupingStore({
proxy : nouveau Ext.data.HttpProxy({
url : ''
}),
lecteur : nouveau Ext.data.JsonReader({
root : 'hstamcx',
totalProperty : "results" ,
champs : ["id","valeur" ]
})
});
Ext.onReady(fonction(){
Ext.QuickTips.init();
Ext.form.Field.prototype.msgTarget = 'côté';
testStore.load ();
var reCount = testStore.getCount();
  var port = nouveau Ext.Viewport({
mise en page : 'auto',
                                                                                                                                                      dehors                                                                                     pouvez 🎜>         });});
2. valeur chargée, vous devez écrire le traitement ultérieur dans la fonction de rappel.
Ext.onReady(
fonction
(){
Ext.QuickTips.init();
         Ext.form.Field.prototype.msgTarget = 'side';
          testStore.load({
                callback : function(r, options, succès) {
                      var reCount = testStore.getCount();
                }
         });
         var port = nouveau Ext.Viewport({
                layout : 'auto',
                frame : true,
                items : [winKey]
         });
});
此时可以获得reCount的值,并且 rappel : fonction (r, options, succès)函数里面使用,在callback函数里既不能给外部的其他元素赋值,也没有办法将r数据传到外面去
 3、如果想在js页面Ext.Ajax.request成同步,接收数据的变量要定义在
Ext.Ajax.request外面
         var
CancelMode;         Ext.Ajax.request({               url :
''
,                méthode : 'post',
                 sync:
vrai, //同步请求                succès : fonction
(réponse) {
 var response = Ext.util.JSON.decode(response.responseText);
                 CancelMode = réponse.hstamcx[0].param_value;
                                                            );
À ce moment, vous pouvez utiliser les données obtenues par le
Demande Ext.Ajax.request à l'extérieur, telle que alert(
cancelMode
);
Exemple de code backend : cet exemple est un exemple approximatif, pas le code complet public
void getData(Réponse HttpServletResponse){ TestData td = TestDataDao.getTestdata() ;
String message =
"{name:"
+
td
.getName()+ ",id:" + td .getId()+ "}";                                                       🎜>out=response.getWriter ();
out.write(message); out.flush();
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn