2013-03-19 91 views
0

我在获取要在对象内使用的Ajax响应时遇到问题。在对象内返回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的异步 我看到这个线程jQuery AJAX Handling Problem运行this.addItem(Array)但我不是这是否适用于我。

感谢大家的时间提前:)

+0

[Declare a javascript object。然后使用jQuery和Ajax设置属性](http://stackoverflow.com/questions/8287834/declare-a-javascript-object-then-set-properties-with-jquery-and-ajax) – 2013-03-19 15:27:51

+0

http:// learn。 jquery.com/ajax/key-concepts/ *“A是为异步”* – 2013-03-19 15:36:03

回答

3

的帮助下,我不是你的要求完全清楚,但现在看来,this.addItem是行不通的代码当前编写方式。 this的值更改了您传递给$ .post的匿名函数的范围。在retrieveCart中缓存对this的引用。

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

谢谢,我刚刚看到线程[声明一个javascript对象。然后设置属性与jQuery和Ajax](http://stackoverflow.com/questions/8287834/declare-a-javascript-object-then-set-properties-with-jquery-and-ajax?rq=1)请关闭我的作为重复 – 4drenaline 2013-03-19 15:22:52

+0

@ 4drenaline你应该能够点击“删除” – 2013-03-19 15:38:13