首頁  >  文章  >  web前端  >  ExtJs非同步無法向外傳值和賦值該如何解決?

ExtJs非同步無法向外傳值和賦值該如何解決?

零下一度
零下一度原創
2017-06-26 09:49:041435瀏覽
1、Ext.data.Store.load();方法是異步的,下面的方式獲得的reCount始終是0,因為還沒等後台的方法執行完就賦值了,此時store的record還沒獲得值。
var testStore = new Ext .data.GroupingStore({
     proxy : #new##Ext.data.HttpProxy({
           url : '##'
#   
#     reader :
#new Ext.data.JsonReader({
## root :
'hstamcx',           totalProperty : "results"
,
           fields : ["id"
,
#"value"#"id",#"value"#]
     })
});Ext.onReady(
function(){
##         Ext.QuickTips.init();
         Ext.form.Field.prototype.msgTarget =
'side'##; testStore.load (); #         var reCount = testStore.getCount();
         #var
port = new Ext.Viewport({
                layout :
'auto',
                frame :
true
,##          });#});
2、如果想要對載入的值進行處理,必須將後續處理寫在回調函數中。
###Ext.onReady(#########function#########(){############ ###         Ext.QuickTips.init();######
         Ext.form.Field.prototype.msgTarget = 'side';
      testStore.load({
                callback : function(r, options,   var reCount = testStore.getCount();
                }
##        
var
##port =
#new
Ext.Viewport({                layout : 'auto',                frame :
true,T ## ##         });
});此時可以取得reCount的值,且 callback : function(r, options, success)的r就是store載入查到的資料。
但依然存在問題:r的資料值只能在回呼函數裡面使用,在callback函數裡既不能給外部的其他元素賦值,也沒有辦法將r資料傳到外面去
 
3、如果想在js頁面向後台發送請求,並在外面使用後台返回的資料值,可以使用
Ext.Ajax.request,並將請求方式設定成同步,接收資料的變數要定義在
Ext.Ajax.request外面
         var
cancelMode;
         Ext.Ajax.request({                 url:
'',## ##,
                sync:
true, //同步要求
                success: function
(response) {##(response) {
                     var response = Ext. ##                     cancelMode = = response.hstamcx[0].param_value;  
#           });
此時就可以在外面使用
Ext.Ajax.request的請求所獲得的資料了,例如alert(
cancelMode
);
後台程式碼範例:此範例是舉個大概例子,並不是完整程式碼
public void
#getData(
HttpServletResponse response#)##{##     #)##{##           TestData td = TestDataDao.getTestdata()      TestData td = TestDataDao.getTestdata()      TestData td = TestDataDao.getTestdata()      TestData td = TestDataDao.getTestdata()      TestData td = TestDataDao.getTestdata()ao.getTestdata() ;           String message = 
"{name:"
#td
 .getName()##+
#",id:" + td.getId()+ "}";           #PrintWriter 
out=response.getWriter();
#           out.write(message);
######################################################################################################################################################## # out.flush();###############     }##########################################################################################################################

以上是ExtJs非同步無法向外傳值和賦值該如何解決?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn