2011-04-01 69 views
3

這是我的AJAX調用:AJAX調用只發送最後一個項目,而不是整個陣列

$(".all_of_union").live("click", function(){ 
     id = window.location.href.split("/")[5] 

     var data = {}; 
    data.value = $(".union input").map(function(){ 
     return $(this).val(); 
    }).get(); 
    data.type = 'zip'; 

    $.ajax({ 
     type: "POST", 
     url: "/admin/emails/" + id + "/distributions", 
     dataType: "script", 
     data: data 
    }); 
}); 

如果我做alert(data.value)在我的控制檯,然後將它正確地揭示了所有的郵政編碼。但是在我的Rails應用程序中仔細選擇了我的斷點後,當它碰到控制器時,實際上只顯示最後一個郵政編碼。

即使我發了AJAX調用就像這樣:

$.ajax({ 
     type: "POST", 
     url: "/admin/emails/" + id + "/distributions", 
     dataType: "script", 
     data: { value: ["07005", "07034", "07035", "07045", "07046", "07054", "07058", "07082", "07405", "07435", "07438", "07440", "07444", "07457", "07460", "07801", "07803", "07806", "07828", "07830", "07834", "07836", "07840", "07847", "07849", "07850", "07852", "07853", "07856", "07857", "07866", "07869", "07876", "07885", "07920", "07927", "07928", "07930", "07931", "07932", "07933", "07934", "07935", "07936", "07940", "07945", "07946", "07950", "07960", "07976", "07980", "07981", "07999", "07802", "07842", "07845", "07870", "07878", "07926", "07961", "07962", "07963", "07970"], type: data.type } 
    }); 

結果:

{"authenticity_token"=>"bMmx0pnJ6ePq6ogwSCR1JH55U7wtrMEOy6ME4rNRmCI=", 
"action"=>"create", 
"type"=>"undefined", 
"value"=>"07970", 
"controller"=>"admin/distributions", 
"email_id"=>"3"} 

不過只有最後一個郵政編碼節目。

或者,我可以啞下來像這樣簡單:

$.ajax({ 
    type: "POST", 
    url: "/admin/emails/" + id + "/distributions", 
    dataType: "script", 
    data: { value: ['1', '2'] } 
}); 

只有2將返回。

我無法合理地理解這一點。還有誰?

+0

你用螢火蟲或TamperData,看看到底是什麼HTTP POST參數看起來像?問題在於,必須重複「值」參數,每個郵政編碼一次。 HTTP允許這樣做,但你的服務器端代碼必須期望它並處理它。或者,jQuery可能會將單個參數變成一堆帶有修飾名稱的參數,如「value [0]」,「value [1]」等。 – Pointy 2011-04-01 11:38:24

+0

我正在使用Rails控制檯查看HTTP POST參數。不確定如何設置它以「期待」它,因爲它只是讀取基本上沒有Rails的HTTP POST,或者與服務器端代碼有關的任何內容,並且現在顯示的是拉鍊。如果將它轉化爲值[0]或值[1],那麼這些參數也會顯示在我的參數中。我會發布我在上面看到的結果。 – Trip 2011-04-01 11:42:01

+0

那麼我會鼓勵你在**瀏覽器**端使用一些東西來看看HTTP請求是如何開始的。從Rails方面來說,可能爲時已晚。我個人喜歡TamperData,但Firebug控制檯也應該顯示你的請求內容。 – Pointy 2011-04-01 11:44:50

回答

2

你可以試試這個

traditional: true 

編輯:

我想你的榜樣,得到它的工作。 下面是腳本:

$.ajax({ 
    type: "POST", 
    url: "/home/test/" + 4, 
    dataType: "script", 
    traditional: true, 
    data: { value: ['1', '2'] } 
    }); 

這裏是方法

[HttpPost] 
public ActionResult Test(string id, string[] value) 
{ 
    return RedirectToAction("Index"); 
} 

我得到了數組「值」兩個值

+0

哇有趣,但它does not幫助 – Trip 2011-04-01 12:38:57

+0

你用什麼版本的jQuery? – Trip 2011-04-01 13:05:09

+0

我使用1.4.4 – 2011-04-01 13:12:33

相關問題