2014-06-30 4 views
0

Extjs를 사용하는 경우 내 웹 서비스가 json 문자열로 응답합니다. {"msg":"Some"} 그리드를 Some으로 채 웁니다.Extjs 3.4 아약스 호출 후 모눈 채우기

Ext.onReady(function(){ 

    var store = new Ext.data.JsonStore({ 
    url: "my/json/url.json", 
    fields: [{name:"msg"}] 
    }); 

    function StoreLoadCallback(records, operation, success){ 
     if (success) { 
     console.log(records); // record is undefined 
     alert(records); // show 'undefined' 
     } else { 
     console.log('error'); 
     } 
    } 

    function ajaxSearch_function(){ 
    var query = Ext.getCmp('search').getValue(); 
    store.load({ 
     params: {query: query}, 
     callback: StoreLoadCallback  
    }); 
    } 

    var form = new Ext.FormPanel({ 
    defaultType: 'textfield', 
    items: [{ 
     fieldLabel: 'search', 
     name: 'search', 
     id: 'search' 
    }], 

    buttons: [{ 
     text: 'Search', handler: ajaxSearch_function 
    }] 
    }); 

    form.render('ajax-search_form'); 

    var grid = new Ext.grid.GridPanel({ 
    store: store, 
    columns: [{ 
     id  :'title', 
     header : 'title', 
     sortable : true, 
     dataIndex: 'title' 
     }], 
    }); 

    grid.render('ajax-grid'); 
}); 

웹 서비스가 잘 응답하고, 나는 Curl을 테스트했습니다. 문제는 json 응답으로 표를 채우는 것입니다.

+0

JavaScript가 서버에 올바르게 요청하는지 확인 했습니까? – pherris

+0

예, success 부울 값은 true이지만 records 변수는 비어 있습니다. – user1066183

+0

Java 웹 서비스의 경우 올바른 json을 만들려면 적절한 설정자가 있어야합니다. 적절한 설정자가 없으면 서버 응답이 올 바르더라도 json이 제대로 작성되지 않습니다. 이것은 문제 일 수 있습니다. –

답변

1

콜백 메소드에서 records 변수가 정의되지 않았다고 말하면 응답 구문 분석에 문제가있을 수 있습니다. 나는 그것이 하나의 레코드 대신에 배열을 기대한다고 생각한다. 당신이 (전. 전자. 응답이 올바르게 구문 분석)가, 당신의 DataGrid 열의 오히려 "MSG"보다 "제목"을 참조 볼이 장애물을 통과 한 후 [{"msg" : "Some"}]

{"msg" : "Some"}에서 JSON 파일의 내용을 변경하려고합니다. Title은 상점의 구성원이 아니므로 열에는 어쨌든 빈 값이 표시됩니다.

또한 메서드 이름을 대문자로 시작하는 것은 일반적이지 않습니다 (클래스가 "클래스"를 제외하고). 따라서 StoreLoadCallback 대신 storeLoadCallback 메서드를 호출하는 것이 좋을 것입니다.

+0

문제는 "제목"과 대괄호입니다. 귀하의 솔루션으로 내가 해결했습니다. – user1066183

관련 문제