复杂jquerypost

复杂jquerypost,jquery,html,Jquery,Html,我有一个表单,其中包含n个amount div,每个div包含单独的输入。这些div存在于相同的类名“c1”下,但不包含任何其他属性。每个c1包含具有唯一类名的相同输入。每个div将始终包含相同样式的输入。这方面的一个例子是: <div class="c1"> <input class="in1" type="text"/> <input class="in2" type="text"/> </div> <div class=

我有一个表单,其中包含n个amount div,每个div包含单独的输入。这些div存在于相同的类名“c1”下,但不包含任何其他属性。每个c1包含具有唯一类名的相同输入。每个div将始终包含相同样式的输入。这方面的一个例子是:

<div class="c1">
    <input class="in1" type="text"/>
    <input class="in2" type="text"/>
</div>
<div class="c1">
    <input class="in1" type="text"/>
    <input class="in2" type="text"/>
</div>
<div class="c1">
    <input class="in1" type="text"/>
    <input class="in2" type="text"/>
</div>

应该使用jQuery的$.post(…)通过post发送信息。我不使用id系统让用户能够修改内容,即添加和删除c1 div。我不知道如何将收集到的信息发布到一个php页面上,以获取n个条目,也不知道如何根据div将信息保存在一起。有什么建议吗


我一直在考虑使用serialize,但我不确定如何根据封装的div保持信息的唯一性。另一种方法是使用
为post的“data”参数创建自定义
映射,但是有些东西告诉我,我走错了路。

如果动态生成,可以为每个输入设置唯一的id。比如inp1,inp2等等。然后,您可以基于这些唯一ID创建地图。

您可以执行以下操作以自动生成命名参数:

    var postData = {};
    $(".c1").each(function() {
        var name = "input" + $(this).index();

        postData[name + "in1"] = $(this).find(".in1").val();
        postData[name + "in2"] = $(this).find(".in2").val()       
    })

    console.log(postData);
然后通过AJAX提交postData


如果您严格遵循HTML代码,则无法自动执行任何操作,例如使用jQuery中的
.serialize()
方法,因为它至少需要使用
名称

手动操作时,您可以创建数据,然后按如下方式发布:

$("#btnSave").click(function() {

var dt = {},
    div = 0,
    arr = 0;

$(".c1").each(function() {
  // for each <div class="c1">
  $(this).find("input").each(function() {
    // for each <input> inside the <div>

    dt['p' + arr++] = 'd' + div + 
            '_c_' + $(this).attr("class") + 
            '_v_' + $(this).val();
  });
  div++;
});

// now, we post the data    
$.post("http://bing.com/", dt, function(data) {
  // do something...
});

return false; // dont post automatically

});
d2\u c\u in2\u v\u 6
可以将字符串拆分为:

  • div的
    \u d
  • 类名称的
    \u c
  • 输入值的
    \u v\u

输入是否有name属性?@MikeRobinson它们只有class属性。是的,只需使用
。每个
迭代它们并创建要发送到服务器的数组。谢谢。我试图使用一种笨拙的方法生成映射。我将我的响应格式化为映射,就像您的示例一样。我也像你的帖子一样通过控制台打印出来,地图看起来很好。然而,当我试图将
postdata
传递到
$.post(“the/webpage.php”,postdata,function(data){…})中时,我通过谷歌浏览器得到了这个
未捕获的类型错误:非法调用
。Chrome指向那条线。
p0  _d_0_c_in1_v_1
p1  _d_0_c_in2_v_4
p2  _d_1_c_in1_v_2
p3  _d_1_c_in2_v_5
p4  _d_2_c_in1_v_3
p5  _d_2_c_in2_v_6