0

我正在附加多个输入框并成功地将一个输入数组发布到 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);
                }
            );
        });
    });
}
4

3 回答 3

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 来做到这一点(也许序列化两个数组,或者在传递给之前将两个数组组合成一个数组)服务器。如果你能告诉我你的表单是什么样子的,我会更具体。

于 2012-11-16T16:35:33.400 回答
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);
            }
        );
    });
}
于 2012-11-16T16:33:09.480 回答
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);
});
    });

});

看起来您正在为 thetextnumberpost 变量分配相同的值,因为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);
    });

  });
});
于 2012-11-16T16:29:45.687 回答