代码之家  ›  专栏  ›  技术社区  ›  dscher

同时向表单提交发送jquery.ajax数据

  •  1
  • dscher  · 技术社区  · 14 年前

    我有一个难题。我有一个表格,它有许多领域。在“链接”字段中,输入链接,单击“添加”按钮,链接(使用jquery)将添加到链接\数组中。我希望在提交表单时通过jquery.ajax方法发送此数组。如果我像这样使用$.Ajax发送链接\数组:

        $.ajax({
            type: "POST",
            url: "add_stock",
            dataType: "json",
            data: { "links": link_array }
            });
    

    选择“添加链接”按钮后,数据将无问题地放到正确的位置,并正确地放入数据库中。如果我使用$(stock_form)将上述功能绑定到提交表单按钮,请提交(…..然后发送表单数据的其余部分,但不发送链接数组。

    很明显,我可以将链接数组传递回HTML中的隐藏字段中,但随后我必须将数组解包为逗号分隔的值,并在PHP中将逗号分隔的字符串分隔开。在PHP中解包JavaScript数组似乎要容易100倍,而无需其他麻烦。

    那么,您如何能够将使用$.Ajax并发的javascript数组发送到HTML中的其余$\u post数据呢?

    请注意,我使用的是Kohana3.0框架,但实际上这并没有什么不同,我想做的是将这个JS数组添加到已经开始使用的$_Post数组中。

    谢谢!

    2 回复  |  直到 14 年前
        1
  •  2
  •   T.J. Crowder    14 年前

    如果您真的想提交表单(例如,使用页面刷新等),您唯一的选择是添加一系列 <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("&")
    });
    

    我们从 串行化 ,初始化数组,然后为其上的每个链接推送编码字段。然后我们使用 Array#join 把这些收集到一个字符串中 阿贾克斯 打电话。(如果愿意的话,可以使用字符串concat来实现这一点,但是使用数组构建这些长字符串在某些元素之后会更快,并使整个“Do I Put & 不管是不是“也自然会掉出来。”

        2
  •  0
  •   ndp    14 年前

    使用jquery会有更好的运气 serializeArray serialize function ,然后添加您拥有的额外字段,最后用 .ajax .