代码之家  ›  专栏  ›  技术社区  ›  Brandon Frohbieter

我怎样才能把变量从这个坑里挖出来?

  •  1
  • Brandon Frohbieter  · 技术社区  · 15 年前

    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);
            }
        });
    }
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   Pointy    15 年前

    就这么做吧 一切 里面 “成功”回调。

    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);
              }
          });
      }
    }
    
        2
  •  0
  •   cusspvz    15 年前

    您需要输入以下代码:

    r2 = new Ext.ux.form.Rater({
        displayValue: x,
        maxValue: 10
    });
    
    var simple = new Ext.FormPanel({
        items: [r2]
    });
    

    在AJAX 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]
                });
            }