2011-03-11 29 views
0

嘿那裏, 同樣,我一直在尋找一個解決方案,找出爲什麼一個函數,不會被調用......並猜測是什麼,我沒有找到。

我有一個表單,我使用jQuery Ajax提交。當出現錯誤時,我得到每個本地數據,然後將它們分類並顯示給用戶。

下面是示例代碼:

$.ajax({ 
      type: "POST", 
      url: "http://xxx/register.php", 
      data: form, 
      success: function(msg){ 
       //console.log("Data Saved: " + msg); 
       $.iGrowl(2,stringdata[4]); 

       var data = parseJSON(msg); 

       if(data.msg.score != undefined){ 
        var cpt = 0; 
        $.each(data.msg.score, function(index,el){ 
         if(cpt<8){ 
          if(el.selected) 
           $('tbody').append('<tr class="win"><td>' + el.name + '</td><td>' + el.score + '</td></tr>'); 
          else 
           $('tbody').append('<tr><td>' + el.name + '</td><td>' + el.score + '</td></tr>'); 
         } 
        }); 
       } 
       else{ 
          $.iGrowl(3,"Erreur inconnue..."); 
       } 
       $("#scorediv").css("visibility","visible"); 

       $("#formule").css('opacity',0); 

     $("#scorediv").css('opacity',1); 

      }, 
      error: function(data) {    
       cpt = 0; 
       var i = 0; 
       score.each(function(r){ 
        arrayScore[i] = r; 
        i++; 
       }); 

       arrayScore.sort(function(a, b){ 
        console.log("sorting..."); 
        if(a[3]) 
        { 
         if(b[3]) 
         {   
          return (b[3].value - a[3].value); //causes an array to be sorted numerically and descending 
         } 
        } 
       }); 
       $.each(arrayScore, function(index,el){ 
       //arrayScore.forEach(function(el) { 
       //score.each(function(el){ 
        if(cpt<8) 
        { 
         if(el[2].value == form[2].value) 
          $('tbody').append('<tr class="win"><td>' + el[1].value + '</td><td>' + el[3].value + '</td></tr>'); 
         else 
          $('tbody').append('<tr><td>' + el[1].value + '</td><td>' + el[3].value + '</td></tr>'); 
         cpt++; 
        } 
        else 
         return false; 
       }); 


       var user = form; 
       store.save(user, function(r) { 
       }); 

       $.iGrowl(3,stringdata[5]); 

       $("#scorediv").css("visibility","visible"); 
       $("#formule").css('opacity',0); 
       $("#scorediv").css('opacity',1); 
      } 
     }); 

我的陣列是永遠不會來分類的。如果我改變了一部分:

var i = 0; 
score.each(function(r){ 
    arrayScore[i] = r; 
    i++; 
}); 

本:

score.each(function(r){ 
    arrayScore.push(r); 
}); 

arrayScore永遠不會填滿。

我嘗試逐步執行控制檯中的每一行,它的工作....我越來越瘋狂...我真的不知道會發生什麼?

任何幫助將優雅的感激!

P.S:我正在使用jQuery1.5 + Lawnchair和CSS3動畫。 在safari和chrome上測試代碼。

謝謝!

回答

0

Javascript數組對象不支持稱爲each的方法。你應該嘗試

$.each(score, function(index, value){...}); 
+0

Score是一個Lawnchair對象:)並且它支持.each()函數。如果我設置了一個時間間隔,允許我連續兩次調用每個函數,那麼它的工作原理是0_°? – gabrielstuff 2011-03-13 16:30:39