首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在表单提交时同时发送jQuery.ajax数据

在表单提交时同时发送jQuery.ajax数据
EN

Stack Overflow用户
提问于 2010-05-13 14:45:33
回答 2查看 1.4K关注 0票数 1

我有一个小难题。我有一个表单,其中有许多字段。有一个用于链接的字段,您可以在其中输入一个链接,单击add按钮,该链接(使用jQuery)将被添加到link_array中。我希望在提交表单时通过jQuery.ajax方法发送此数组。如果我使用$.ajax发送link_array,如下所示:

代码语言:javascript
复制
    $.ajax({
        type: "POST",
        url: "add_stock",
        dataType: "json",
        data: { "links": link_array }
        });

当选择添加链接按钮时,数据将不会出现任何问题,并且会正确地放入数据库中。如果我使用$(#stock_form).submit(..... )将上述函数绑定到submit form按钮然后发送表单数据的其余部分,但不发送link_array。

在HTML中,我显然可以将链接数组传递回隐藏字段中,但是在PHP中,我必须将数组解压为逗号分隔的值,并将逗号分隔的字符串拆分开来。在PHP中解压Javascript数组似乎要简单100倍,而且不会有其他麻烦。

那么,如何使用$.ajax与$_POST中的其余数据并发地从javascript发送数组呢?

请注意,我使用的是Kohana3.0框架,但这不会有什么不同,我想要做的是将这个js数组添加到已有的$_POST数组中。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-13 14:50:59

如果您实际上想要提交表单(例如,通过页面刷新等等),那么您唯一的选择就是向表单中添加一系列名为links<input type='hidden'>字段,并用数组中的一个值填充每个字段。那么你在另一端得到的基本上就是你通过上面的$.ajax调用得到的东西。

如果您只想将数据发送到服务器,但实际上不需要提交表单,那么可以在表单上使用serialize来获得一个URL编码的字符串,然后将链接附加到字符串的末尾,并通过ajax发送该字符串。如下所示:

代码语言:javascript
复制
// 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调用一起发送。(如果您愿意,也可以使用string concat来实现这一点,但是使用数组构建这些长字符串在元素数量达到一定数量后会更快,并且会使整个"do I put an & on it or not“自然地消失。)

票数 2
EN

Stack Overflow用户

发布于 2010-05-13 15:06:16

使用jQuery的serializeArrayserialize function,然后添加额外的字段,最后使用.ajax提交帖子数据会更好一些。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2824887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档