0

以下は、ストアをロードするサーバーへの ajax 呼び出しです。

   function setUpStore(Id){
    store = Ext.create('Ext.data.TreeStore', {
    storeId:'jsonStore',
    proxy: {
        type: 'ajax',
        url: 'fetchData.action?ID='+Id,
        reader: {
            type: 'json'
        },
        success : function(resp){
            alert("success!!!");
        }
    }
});

}

JSON オブジェクトを返す以下の Java メソッドを呼び出します。

public String fetchJSONObj(){

              HttpServletResponse res = ServletActionContext.getResponse();
              HttpServletRequest req  = ServletActionContext.getRequest();

    ID = (String) req.getParameter("ID");
    res.setHeader("Content-Type", "application/json");

    VendorVO root= ServiceHelper.getInstance().getService().getData(ID);


    Data = new ExtJsTreeWrapper();
    Data.setText(ID);
    Data.setId(ID);
    Data.getChildren().add(convertVOToExtJSWrapper(root));
    return SUCCESS;
}

サーバーから応答を受け取った後、成功ハンドラーに記載されているアラートが表示されません。私はそれを正しく宣言していますか?

ありがとう

4

1 に答える 1

2

プロキシには、successという設定オプションがありません。

コードを指定すると、ストアのロードイベントにフックできます。

function setUpStore(Id){
    store = Ext.create('Ext.data.TreeStore', {
        storeId:'jsonStore',
        proxy: {
            type: 'ajax',
            url: 'fetchData.action?ID='+Id,
            reader: {
                type: 'json'
            },
        },
        listeners: {
           load: {
               fn: function() {
                   // Do something here.
               },
           },
           scope: this               
        }
    }
});

手動でロードする場合は、コールバックをパラメーターとしてロード関数に渡すこともできます。

于 2012-06-26T09:28:51.673 に答える