2011-04-01 9 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アプリケーションで慎重に選択された状態で、コントローラにヒットすると、最後の郵便番号だけが実際に表示されます。それでも最後の郵便番号ショー

{"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: ["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 } 
    }); 

結果:私はそうのようなAJAX呼び出しを送っていても

または私はこのような単純なダウンそれはダムができ:

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

のみ2戻ります。

私はこれを合理的に理解できません。誰か?

+0

あなたが正確に何HTTP POSTを見るためにFirebugのかTamperDataを使用しました取得方法

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

ですパラメータはどのように見える?問題は、各郵便番号ごとに1回、「値」パラメータを繰り返す必要があることです。 HTTPではこれが可能ですが、サーバーサイドのコードではそれを期待して処理する必要があります。あるいは、jQueryは、単一のパラメータを "value [0]"、 "value [1]"などのような名前の付いた一連のパラメータに変えているかもしれません。 – Pointy

+0

私はRailsコンソールを使ってHTTP POSTパラメータを見ています。基本的にRailsを使わずにHTTP POSTを読んだり、サーバ側のコードと何かを読んだりしてzipが表示されているように、それを "期待する"ように設定する方法は本当にわかりません。それを値[0]または値[1]に変換していた場合、それらも私のパラメータにも表示されます。私は結果について上記で見ているものを投稿します。 – Trip

+0

HTTPリクエストがどのように始まるか見るには、**ブラウザ**の最後で何かを使うことをお勧めします。 Rails側から、それは遅すぎるかもしれません。個人的に私はTamperDataが気に入っていますが、Firebugコンソールにもリクエスト内容が表示されるはずです。 – Pointy

答えて

2

あなたはこの

traditional: true 

EDIT試みることができる:

を私はあなたの例を試してみましたが、それが動作するようになりました。ここ はスクリプトです:

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

そして、ここでは、私は、配列「値」の二つの値

+0

wow興味深いですが、それは助けません – Trip

+0

どのバージョンのjQueryを使用していますか? – Trip

+0

1.4.4を使用しています –

関連する問題