我有点难题。我有一个有很多领域的表格。链接有一个字段,您可以在其中输入链接,单击添加按钮,链接(使用jQuery)将添加到link_array。我希望在提交表单时通过jQuery.ajax方法发送此数组。如果我使用$ .ajax发送link_array,如下所示:
$.ajax({
type: "POST",
url: "add_stock",
dataType: "json",
data: { "links": link_array }
});
当选择添加链接按钮时,数据没有问题到正确的位置并正确地放入数据库。如果我使用$(#stock_form).submit(.....然后发送其余的表单数据而不是link_array,将上述函数绑定到提交表单按钮。
我显然可以将链接数组传回HTML中的隐藏字段,但之后我必须将数组解压缩为逗号分隔值,并在PHP中将逗号分隔的字符串分开。在没有其他大惊小怪的情况下,在PHP中解压缩Javascript数组似乎更容易100倍。
那么,你如何使用$ .ajax并发javascript将数组发送到HTML中的其他$ _POST数据呢?
请注意我正在使用Kohana 3.0框架,但实际上这应该没有什么区别,我想要做的是将这个js数组添加到已经进行的$ _POST数组中。
谢谢!
答案 0 :(得分:2)
如果您确实想要提交表单(例如,通过页面刷新等等),您唯一的选择就是在表单中添加一系列<input type='hidden'>
字段,其名称为links
并填写每个都有一个来自数组的值。那么你在另一端获得的内容基本上就是你通过上面的$.ajax
调用获得的。
如果您只想将数据发送到服务器但实际上不需要提交表单,可以使用表单上的serialize
为其获取URL编码的字符串,然后附加您的链接到字符串的结尾,并通过ajax
发送。 像这样的东西:
// Assuming 'link_array' is present
var data, n;
data = [$('#TheFormID').serialize()];
for (n = 0; n < link_array.length; ++n) {
data.push("links=" + encodeURIComponent(link_array[n]));
}
$.ajax({
type: "POST",
url: "add_stock",
dataType: "json",
data: data.join("&")
});
我们从serialize
获取URL编码字符串的开头,用它初始化一个数组,然后为其上的每个链接推送编码字段。然后我们使用Array#join
将所有内容收集到一个字符串中,以便通过ajax
调用发送。 (如果你愿意的话,你可以用字符串concat来做这件事,但是在一定数量的元素之后用数组构建这些长字符串会更快,并使整个“我是否在其上放置&
”自然也会脱落。)
答案 1 :(得分:0)
使用jQuery的serializeArray
或serialize
function,然后添加您拥有的额外字段,最后使用.ajax
提交POST数据,您将获得更好的运气。