3

当我实例化一个对象时,它应该使用 jQuery 的 getJSON 方法获取数据并从该数据中填充对象的属性。相反,我开始Uncaught Reference: data is not defined了 AJAX 调用。data,在这种情况下,是我传递给回调函数的 JSON 数据对象参数的名称。

我的构造函数:

function HeadlineList(url) {
    this.url = url;

    this.checkEmpty = function() {
        if (this.headlines === 0) {
            this.refreshContent();
        }
    };

    this.getRandom = function(remove) {
        var headlineNumber = Math.floor(Math.random()*this.quantity);
        var headline = this.headlines[headlineNumber];
        if (remove) {
            this.deleteHeadline(headlineNumber);
        }
        return headline;
    };

    this.getHeadline = function(number, remove) {
        var headline = this.headlines[number]
        if (remove) {
            this.deleteHeadline(number);
        }
        return headline;
    };

    this.deleteHeadline = function(number) {
        this.headlines.splice(number, 1);
        this. quantity -= 1;
    };

    this.fillFromJSON = function(data) {
      this.headlines = data.headlines;
      this.quantity = this.list.length;
    };

    this.refreshContent = function() {
        $.getJSON(this.url, this.fillFromJSON(data));
    };

    this.refreshContent();
}

我正在像这样实例化一个对象:

headlines = new HeadlineList('js/headlines.json');

谁能帮我弄清楚为什么这不起作用?

4

1 回答 1

4

将函数引用作为回调传递给 $.getJSON 时,您希望传递对函数的引用。此时您不需要命名参数。

$.getJSON(url,myFunction);

参数已在此处命名:

myFunction = function(data) {
   ...
}

如果你改为

$.getJSON(url,myFunction(data));

您实际上是立即执行 myFunction,然后将其返回的值 ( undefined) 作为回调传递给$.getJSON()

于 2013-05-08T19:55:27.143 回答