2013-03-19 3 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); 
    } 

Я хочу, чтобы иметь возможность запускать this.addItem(Array) в то же время с помощью Ajax асинхронно Я видел эту тему jQuery AJAX Handling Problem, но я не относится ли это ко мне.

Спасибо всем за помощь раньше времени :)

+0

Возможный дубликат [Объявить объект javascript. Затем установите свойства с помощью jQuery и Ajax] (http://stackoverflow.com/questions/8287834/declare-a-javascript-object-then-set-properties-with-jquery-and-ajax) –

+0

http: // learn. jquery.com/ajax/key-concepts/ * «A для асинхронных» * –

ответ

3

Я не совсем ясно, на что вы просите, но это, кажется, что this.addItem не будет работать так, как код в настоящее время написано. Значение this изменяет объем анонимной функции, которую вы передаете в $ .post. Кэшировать ссылку на this в retrieveCart.

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) Пожалуйста, закройте шахту как Duplicate – 4drenaline

+0

@ 4drenaline вы должны нажать «Удалить», –

Смежные вопросы