1
Sencha Touch 응용 프로그램에서 작업 중이며 웹 서비스에서 데이터를 가져올 수 없습니다.Ext.data.JsonStore getCount()가 0 레코드를 반환합니다. 웹 서비스
다음 코드는 다른 사용자의 sencha's forums 페이지 4에서 작동했습니다. 웹 서비스 출력 json과 일치하도록이 코드를 수정했습니다.
var myStore = new Ext.data.JsonStore({
id: 'Agents',
proxy: new Ext.data.HttpProxy({
url: 'ws/Service.asmx/GetAgents'
,method: 'post'
,jsonData: {}
,headers: { 'Content-Type': 'application/json; charset=utf-8;'}
,reader:{root:'d', record:'rows'}
}),
totalProperty: 'd.totalRows',
idProperty: 'AgentID',
fields: ['AgentID', 'FirstName','LastName'],
autoLoad:'true',
listeners: {
beforeload: function(myStore, options) {
console.log('beforeload: myStore.count = ' + myStore.getCount());
console.log(options);
},
load: function(myStore, records, options) {
console.log('load: ' + myStore.getCount());
console.log(records)
console.log(options);
},
exception: function(misc) {
console.log('exception:');
console.log(misc);
}
}
});
파이어 버그 콘솔 출력 :
beforeload: myStore.count = 0
load: 0
[]
true
방화범이 JSON은 'WS/Service.asmx를가/GetAgents'에서 반환 확인은 다음과 같습니다 그러나
{"d":{"success":true,"totalRows":2,"rows":[{"AgentID":1,"FirstName":"Jelena","LastName":"Akerhus"},{"AgentID":2,"FirstName":"Londo","LastName":"Molari"}]}}
, 나는 '의 mystore를 입력 할 때. getCount() '콘솔에 나는 0 개의 레코드를 얻는다. 여기
이 Service.asmx를위한 코드의 일부입니다[System.Web.Script.Services.ScriptService]
public class Service : System.Web.Services.WebService
{
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true, XmlSerializeString = false)]
public object GetAgents()
{
List<Agent> agents = new List<Agent>();
agents.Add(new Agent(1, "Jelena", "Akerhus"));
agents.Add(new Agent(2, "Londo", "Molari"));
object data = new { success = true, totalRows = agents.Count, rows = agents };
return data;
}
}
감사합니다. 제안한 변경 사항을 추가했지만 여전히 myStore.getCount()에서 0을 얻습니다. 나는 당신의 제안과 제가 시도한 것들을 반영하여 질문을 업데이트 할 것입니다. –
이러한 문제가 발생하면 디버깅 할 수 있고 확장되지 않은 주석 버전의 sencha를 사용합니다. 이 경우 JsonStore를 검색하고 읽기 방법에서 몇 가지 중단 점을 설정하고 단계별로 설정에서 올바르지 않은 부분을 볼 수 있습니다. – ballmw
이것은 효과가있다! 필자는 웹 서비스가 데이터를 올바르게 반환해야하기 때문에 헤더 'Content-Type'을 다시 추가해야했습니다. –