这是我的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
将返回。
我无法合理地理解这一点。还有谁?
你用萤火虫或TamperData,看看到底是什么HTTP POST参数看起来像?问题在于,必须重复“值”参数,每个邮政编码一次。 HTTP允许这样做,但你的服务器端代码必须期望它并处理它。或者,jQuery可能会将单个参数变成一堆带有修饰名称的参数,如“value [0]”,“value [1]”等。 – Pointy 2011-04-01 11:38:24
我正在使用Rails控制台查看HTTP POST参数。不确定如何设置它以“期待”它,因为它只是读取基本上没有Rails的HTTP POST,或者与服务器端代码有关的任何内容,并且现在显示的是拉链。如果将它转化为值[0]或值[1],那么这些参数也会显示在我的参数中。我会发布我在上面看到的结果。 – Trip 2011-04-01 11:42:01
那么我会鼓励你在**浏览器**端使用一些东西来看看HTTP请求是如何开始的。从Rails方面来说,可能为时已晚。我个人喜欢TamperData,但Firebug控制台也应该显示你的请求内容。 – Pointy 2011-04-01 11:44:50