返回Object中的Ajax数据

时间:2013-03-19 15:17:44

标签: javascript jquery ajax object

我遇到了在对象中使用Ajax响应的问题。

function cart(){
    this.items = [];

    this.addItem = function(item){
        //sorts and adds items to this.items
    }

    this.retrieveCart = function(){
        var itemArray = JSON.parse($.cookie('cartItems'));
        var itemNumbers = [];
        var outData = [];
        for(var i in itemArray){
            itemNumbers.push(i);
        }
        $.post('beta-category-ajax.html', {'get' : itemNumbers.join(",")},
        function(data){
            for(var i in data){
                var currentItemNumber = data[i].I;
                var quantity = itemArray[currentItemNumber];
                data[i].Quantity = quantity;
                outData.push(data[i]);
            }
        });
        this.addItem(outData);
    }

我希望能够在异步使用Ajax的同时运行this.addItem(Array) 我看到了这个帖子jQuery AJAX Handling Problem,但如果这适用于我,我不会。

提前感谢大家的帮助:)

1 个答案:

答案 0 :(得分:3)

我不清楚你在问什么,但似乎this.addItem不会像当前编写的代码一样工作。 this的值在您传递给$ .post的匿名函数的范围内发生更改。在this中缓存对retrieveCart的引用。

this.retrieveCart = function () {
  var self = this;
  ...
  $.post(..., function () { 
    ...
    self.addItem(outData);
  });
}