0

ここにあるように、複数の入力ボックスを追加し、1 つの入力配列を 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);
            });
        });
    }

しかし、今は同時に 2 つの入力配列を投稿する必要があります。1 つの入力は顧客の名前で、もう 1 つは顧客の携帯電話番号です。以下を試してみましたが、正しく動作しません。代替アプローチを支援または提案してください。

$('<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

$.post の代わりに $.ajax{}) 関数を使用する必要があります。

$.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>
         }
})

このようにすると、ループの各反復で ajax 呼び出しを行うのではなく、すべてのデータで ajax 呼び出しを 1 回だけ行うことができます。それははるかに効率的でなければなりません。

この関数は複数のデータソースでも使いやすいと思いますが、おそらく $.post でもこれを行う方法を思い付くことができると思います (おそらく、両方の配列をシリアル化するか、2 つの配列を 1 つに結合してからあなたのフォームがどのように見えるかを教えていただければ、より具体的にお答えいただけます。

于 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);
});
    });

});

キーワードは常に内側のループ内の要素を参照するため、同じ値を thetextおよびnumberpost 変数に割り当てているように見えます。これを試して:thisinput.numbereach

$('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 に答える