Я пытаюсь использовать библиотеки Javascript Ext и вызывать службу отдыха, которая возвращает ответ json. Это массив с одним элементом, и он не работает, когда я использую операцию readRecords DataReader (Ext.data.DataReader) для обработки данных json, и она возвращает нулевую ссылку на функцию обратного вызова.
Было бы хорошо, если бы вы предоставили некоторую помощь или предложения для решения проблемы.
Я попытался передать массив в качестве аргумента в читателе, и это не помогает.
Ext.namespace("cityDetails");
var a = "http://" + "Url address to get cityDetails";
var e = new Ext.data.ScriptTagProxy({
callbackParam: "callback",
url: a
});
var f = {
fields: [{
name: "Id"
}, {
name: "city"
}, {
name: "postcode"
}]
};
var d = new cityDetails.reader(f, {});
//call back function
var h = function(k, j, m) {
try {
// k returns null reference
if (k != null) {
alert("PostCode insider else::" + k.jsonObject.postcode)
}
}
} catch (l) {
alert(l)
}
};
var i = this;
e.load({
1: 1
}, d, h, i)
//readRecords from Data - Json Response an array of one objekt
Ext.extend(cityDetails.reader, Ext.data.DataReader, {
readRecords: function(b) {
this.jsonData = b;
alert("Meta ::" + this.meta);
//alert("Meta Root::"+this.meta.root);
var a = false;
return {
success: a,
jsonObject: this.getRoot(b),
totalRecords: 1
}
},
getRoot: function(d) {
if (this.meta && this.meta.root) {
var c = d;
var a = this.meta.root.split(".");
for (var b = 0; b < a.length; b++) {
c = c[a[b]]
}
return c
} else {
alert("Value Of d in reader::" + d);
if (d != null) {
alert("Objects Of d in reader::" + d.jsonObject.postcode);
}
return d
}
}
})
//Initial call.
cityDetails.reader = function(a, b) {
a = a || {};
cityDetails.reader.superclass.constructor.call(this, a, b || a.fields)
};
Пример ответа от службы отдыха показан ниже.
[{
"Id": "121A",
"postcode": "1000",
"city": "ABBA"
}]
Функция обратного вызова k должна возвращать значение ответа Json. Однако он возвращает ноль.