как я могу выкопать мою переменную из этой ямы? - PullRequest
1 голос
/ 26 июня 2010

Вчера я задал довольно плохой вопрос, но у меня все та же общая проблема. Я хотел добавить свойство переменной к объекту, и я попытался сделать 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 не определено. Если я попытаюсь создать r2 до запроса ajax и установить его 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);
        }
    });

}

Ответы [ 2 ]

1 голос
/ 26 июня 2010

Просто сделайте все , что вам нужно сделать с данными внутри обратного вызова «success».

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);
          }
      });
  }
}
0 голосов
/ 26 июня 2010

вам нужно поместить этот код:

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]
            });
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...