【发布时间】:2014-07-25 17:31:28
【问题描述】:
我正在使用 AJAX 提交序列化表单。传递给action.php 的数据最终包含 %5B%5D 而不是 []。无论如何要取回 [],还是可以在action.php 中以相同的方式处理数据(即像数组一样)?
表单通过以下方式序列化:
var form_data = $("#form").serialize();
然后我通过$.ajax发送:
$.ajax({
type: "POST",
url: "action.php",
data: {
form_data: form_data,
FrmSubmit: 'SubmitButton'
},
cache: true,
success: function (html) {
$("#show").html(html);
alert("form success");
}
});
传递给action.php 的理想数据应该类似于:name=JohnSmith&color[]=blue&color[]=yellow&meal[]=chicken&meal[]=fish
我得到的是:
name=JohnSmith&color%5B%5D=blue&color%5B%5D=yellow&meal%5B%5D=chicken&meal%5B%5D=fish
其他问题: 我也尝试过 .param(),但无法真正确定接收到的数据的正面或反面。每个字母最终都被编码在一个密钥中。谁能解释为什么会这样?
【问题讨论】:
-
这是因为
[和]按照RFC的严格解释是not allowed in the URL。不要因为做正确的事而讨厌你的图书馆。