2011-11-11 2 views
1

아래의 상황에서 도와주세요.ExtJs Grid가 응답 텍스트에 따라 업데이트되지 않습니다.

내 Java 웹 응용 프로그램은 JSON을 데이터 교환 형식으로 사용합니다. 달리면서. firebug (firefox)는 예상대로 JSON 데이터뿐 아니라 응답도 표시합니다. 그리드가 예상대로 업데이트되지 않고 비어 있습니다. 아래는 상점 및 그리드 정의입니다.

//Grid & Store definition 

    var searchResultStore = Ext.create('Ext.data.JsonStore', { 
    model : 'BookModel', 
    proxy : { 
     type : 'ajax', 
     reader : { 
      totalProperty : 'results', 
      type : 'json', 
      root : 'data' 
     } 
    }, 
    autoLoad : true 
}); 

Ext.define('Library.SearchBookGrid', { 
    extend : 'Ext.grid.Panel', 
    alias : 'widget.SearchBookGrid', 
    id : 'searchBookGrid', 
    title : 'Books', 
    closable : true, 
    initComponent : function() { 

     this.store = searchResultStore; 

     this.columns = [ { 
      xtype : 'gridcolumn', 
      dataIndex : 'title', 
      text : 'Title' 
     }, { 
      xtype : 'gridcolumn', 
      dataIndex : 'authorName', 
      text : 'Author' 
     } ]; 


     this.callParent(arguments); 
    } 
}); 

BOOK SEARCH ExtJS 양식이 있습니다. URL (/ MyLibrary/Books? action = 6) &을 호출하면 검색 양식 값이 JSONDATA로 제출됩니다. 검색 결과는 저장소 (searchResultStore)에 따라 할당됩니다.

Ext.Ajax.request({ 
     url : '/MyLibrary/Books?action=6', 
     headers: {'Content-Type':'application/json; charset=utf-8'}, 
     jsonData : Ext.JSON.encode(form.getValues()), 
     params:{ 
     action : 6 
     }, 
     method : 'POST', 
     success : function(response, request) { 
       searchResultStore.loadData(Ext.JSON.decode(response.responseText)); 
     }, 
     failure : function(results, request) { 
       Ext.Msg.alert("Search..", "Please try again...!!"); 
     }, 
}); 

는 ... ... 도와주세요 난 아무것도 그리워하거나 내가이 코드에서 잘못된 생각 했습니까 !!!!

미리 감사드립니다 ... !!

+0

독자는, 가게 부하 아약스 요청에 사용되는 수행 할 수있는 PARAMS 참조하십시오. 루트 데이터 속성 안에 있지 않을 수도 있습니다. 아마도 당신의 문제 일 수 있습니다. – nscrob

+0

응답 해 주셔서 감사합니다. nscrob; 말하려는 것 ... 응답 텍스트는 JSONObject 대신 JSONArray 여야합니다 ... 제발 바로 잡으십시오 ... !! –

답변

1

루트 데이터가있는 저장소에 독자를 둔 것을 감안할 때 데이터를로드하는 데 사용하는 json이 해당 형식이 아니길 바랍니다.

loadData 함수는 모델의 배열 또는 요소의 배열을 필요로합니다. [{"id":1},{.... 내 관심사와 같은 당신이 리더를 사용하려고한다는 것입니다 및처럼 JSON은 같습니다

{"data":[{"id:1},{..... 

그런 다음 다시이 문제가되지 않을 수 있습니다. 도움이되기를 바랍니다.

EDIT 첫 번째 의견에서 말하고자하는 것이 문제입니다. 저장소에 설정된 독자는로드 기능으로 저장소를로드 할 때만 사용됩니다.

searchResultStore.loadData(Ext.JSON.decode(response.responseText).data); 

하지만이 제안하는 대신 판독기를 사용합니다 아약스 요청의 저장 부하 방법을 사용하십시오 LoadData 짧은 수정 시도를 원하는 경우 있도록 배열을 기대하고있다.

searchResultStore.load({ 
    url : '/MyLibrary/Books?action=6', 
    jsonData : Ext.JSON.encode(form.getValues()), 
    extraParams:{ 
    action : 6 
    }, 
}) 

확인은 load 기능에 대한 문서와는 데이터 요소의 배열이 자신의 아약스 요청에 대한 있도록

+0

글쎄 ... 나는 응답 텍스트에 대해 언급해야한다. { "제목": "테스트 제목 2", "저자명": " "테스트 제목 3", "저자명": "테스트 AUthor 3"}]} –

+0

응답 json을 게시하여 명확한 ideea를 만들 수 있습니다 – nscrob

+0

yah..i 방금했습니다. 응답 텍스트를 게시했습니다. –

관련 문제