【发布时间】:2011-07-27 15:10:02
【问题描述】:
这是我的 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 会返回。
我无法合理地理解这一点。还有其他人吗?
【问题讨论】:
-
您是否使用过 Firebug 或 TamperData 来准确查看 HTTP POST 参数的样子?问题是必须重复“值”参数,每个邮政编码一次。 HTTP 允许这样做,但您的服务器端代码必须期待它并处理它。或者,jQuery 可能会将单个参数变成一堆参数,并修改名称,如“value[0]”、“value[1]”等。
-
我正在使用 Rails 控制台查看 HTTP POST 参数。不太确定如何设置它以“预期”它,因为它只是在基本上没有 Rails 的情况下读取 HTTP POST,或者与服务器端代码有关的任何内容,并且现在正在显示 zip。如果它把它变成 value[0] 或 value[1],这些也会出现在我的参数中。我将发布我在上面查看的结果。
-
好吧,我鼓励您在 浏览器 端使用一些东西来查看 HTTP 请求是如何开始的。从 Rails 方面来看,可能为时已晚。我个人喜欢 TamperData,但 Firebug 控制台也应该向您显示请求内容。
-
是的,在 HTTP POST 中的 firebug 中,许多邮政编码值都被正确发送。
-
我在我的 rails 应用程序上尝试了你的静态调用,我确实得到了所有的拉链。您使用的是哪个版本的 jQuery?
标签: javascript jquery ruby-on-rails ajax