2013-06-11 38 views
0

我一直在尋找一種方法來做到這一點,我已經看過這裏發佈的幾個問題,但我無法獲得我想要的數組的所有元素。下面是我送的數組:發送jQuery數組到MVC 4控制器

function myFunction(e) { 

     var containerChildren = $("#active").children(); 

     for (i = 0; i < containerChildren.length; i++) { 
      var announcementarray = new Array(); 
      announcementarray[i] = $('#' + containerChildren[i].id).data("id"); 
      alert(announcementarray[i]); 
     } 


     $.ajax({ 
      data: 
       { 
        activeid: announcementarray 
       }, 
      datatype: 'json', 
      url: '/HumanResources/Announcement/AnnouncementActive', 
      cache: false, 
      type: 'POST', 
      traditional: true, 
      error: function (result) { 
       alert(result); 
      }, 
      success: function (result) { 
       //alert(result); 
      } 
     }); 
    } 

然而,每當控制器接收到該信息,那隻能說明與實際值的最後一個孩子,所有的人都undefined。這裏是我的控制器的聲明

public ActionResult AnnouncementActive(string[] activeid, string[] inactiveid) 
{ 
} 

任何幫助表示讚賞! (我試過traditional: true.serialize()等)

+0

發現錯誤:數組的聲明在for循環中。把它拿出來後,問題就解決了! – Jose

回答

4

您正在爲您的第一個選擇器中的每個子元素重新創建數組。 嘗試類似這樣的:

function myFunction(e) { 

    var announcementarray = []; 

    $("#active").children().each(function() { 
     announcementarray.push($(this).data("id")); 
    }); 

    $.ajax({ 
     data: 
      { 
       activeid: announcementarray 
      }, 
     datatype: 'json', 
     url: '/HumanResources/Announcement/AnnouncementActive', 
     cache: false, 
     type: 'POST', 
     traditional: true, 
     error: function (result) { 
      alert(result); 
     }, 
     success: function (result) { 
      //alert(result); 
     } 
    }); 
} 
+0

從$ .children()返回的元素;也是jQuery對象,所以這可以做得更好一點。查看我的更新。 – Jay

+0

這看起來好像不那麼令人困惑。感謝您清理它。然而,每當我運行它,我得到一個運行時錯誤,說它不能識別'數據'(這是一個屬性在HTML'data- *' – Jose

+0

我會將你的回答標記爲答案,但我發現我的錯誤。我已經在for循環中聲明瞭這個數組了,它拿出來之後就像是魅力一樣!感謝您的反饋! – Jose

相關問題