我昨天问了一个相当糟糕的问题,但我仍然有同样的问题。我想向对象添加一个变量属性,我尝试的解决方案是执行ajax请求以接收变量,然后将该属性设置为响应。我想我已经尝试了至少100种不同的方式:
Ext.onReady(go);
function go() {
var x;
function getRating(id, callback) {
Ext.Ajax.request({
url: '/index.php/ajax/do_rate',
method: 'POST',
success: function(result)
{
jsonData = Ext.util.JSON.decode(result.responseText);
x = jsonData.result;
}
});
}
r2 = new Ext.ux.form.Rater({
displayValue: x,
maxValue: 10
});
var simple = new Ext.FormPanel({
items: [r2]
});
simple.render(document.body);
}
如果按上述方式尝试,则x未定义。如果我尝试在ajax请求之前创建r2,并在请求中设置其displayValue,则会在控制台中显示对象的正确displayValue,但不会使用正确的displayValue进行渲染。我不认为这是及时的。感谢您的帮助,我想我可能需要一个'回调',但无法弄清楚正确的方法。
工作代码如下:
Ext.onReady(go);
function go() {
Ext.Ajax.request({
url: '/index.php/ajax/do_rate',
method: 'POST',
success: function(result)
{
jsonData = Ext.util.JSON.decode(result.responseText);
var r2 = new Ext.ux.form.Rater({
displayValue: jsonData.result,
maxValue: 10
});
var simple = new Ext.FormPanel({
items: [r2]
});
simple.render(document.body);
}
});
}
答案 0 :(得分:1)
只需执行所有,您需要处理里面的“成功”回调。
function go() {
function getRating(id, callback) {
Ext.Ajax.request({
url: '/index.php/ajax/do_rate',
method: 'POST',
success: function(result)
{
jsonData = Ext.util.JSON.decode(result.responseText);
var x = jsonData.result;
var r2 = new Ext.ux.form.Rater({
displayValue: x,
maxValue: 10
});
var simple = new Ext.FormPanel({
items: [r2]
});
simple.render(document.body);
}
});
}
}
答案 1 :(得分:0)
你需要输入这段代码:
r2 = new Ext.ux.form.Rater({
displayValue: x,
maxValue: 10
});
var simple = new Ext.FormPanel({
items: [r2]
});
在您的AJAX POST CALLBACK中,如下所示:
success: function(result)
{
jsonData = Ext.util.JSON.decode(result.responseText);
x = jsonData.result;
r2 = new Ext.ux.form.Rater({
displayValue: x,
maxValue: 10
});
var simple = new Ext.FormPanel({
items: [r2]
});
}