通过jquery同时发布两个输入数组

时间:2012-11-16 16:22:59

标签: jquery html mysql

我正在附加多个输入框并成功将一个输入数组发布到mysql,就像这样。

$('<p><input type="text"  class="name" name="task" ></p>').appendTo($('#add_here'));

function addmem(id, text, number) {
    $('input.name').each(function() {
        // var te=$('input.task').val();
        $.post(
            'sendchat2.php', 
            { option: 'add_mem', id: id , text: $(this).val() }, 
            function(data) {
                alert(data);
            });
        });
    }

但现在我需要同时发布两个输入数组。一个输入是客户名称,另一个是他的手机号码。我尝试了以下,但它无法正常工作。请帮助或建议任何替代方法。

$('<p><input type="text"  class="name" ><input type="text"  class="number" name="task" ></p>').appendTo($('#add_here'));

function addmem(id, text, number) {
    $('input.name').each(function() {
        $('input.number').each(function() {
            $.post(
                'sendchat2.php', 
                { option: 'add_mem', id: id, text: $(this).val(), number: $(this).val()}, 
                function(data) {
                    alert(data);
                }
            );
        });
    });
}

3 个答案:

答案 0 :(得分:2)

您应该使用$ .ajax {})函数而不是$ .post。

$.ajax({
  type: 'POST',
  data: array1.serialize() + array2.serialize(), //(if this info is coming from a form, just do $(form identifier).serialize(); and it will send all form elements).
  url: <destination url>
  success: function (data){
          <what you want to do when the request is successful here>
         }
})

这样做,你只需要对所有数据进行1次ajax调用,而不是通过循环进行每次迭代的ajax调用。它应该更有效率。

我认为这个函数也可以更容易地与多个数据源一起使用,但我相信你也许可以用$ .post来实现这个目的(也许是序列化两个数组,或者将两个数组合成一个在传递给服务器之前。如果你能告诉我你的表格是什么样的,我会更具体。

答案 1 :(得分:1)

如果标记始终符合方案<name><number>

function addmem(id, text, number) {
    $('input.name').each(function() {
        var input = $(this),
            name = input.val(),
            number = input.next().val();

        $.post(
            "sendchat2.php", 
            { "option": "add_mem", "id": id, "text": name, "number": number }, 
            function(data) {
               alert(data);
            }
        );
    });
}

答案 2 :(得分:0)

突出的是这个循环

$('input.name').each(function(){

    $('input.number').each(function(){

$.post('sendchat2.php', {option:'add_mem', id:id , text:$(this).val(),number:$(this).val()}, function(data) {
 alert(data);
});
    });

});

看起来您要为textnumber帖子变量分配相同的值,因为this关键字将始终引用内部的input.number元素each循环。试试这个:

$('input.name').each(function(){
  var nameval = $(this).val();

  $('input.number').each(function(){
    var numval = $(this).val();

    $.post('sendchat2.php', {option:'add_mem', id:id , text:nameval, number:numval}, function(data) {
     alert(data);
    });

  });
});