2012-11-16 28 views
0

我附加了多個輸入框,併成功地將一個輸入數組發送到mysql,就像它在這裏一樣。同時通過jquery發佈兩個輸入數組

$('<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); 
       } 
      ); 
     }); 
    }); 
} 

回答

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); 
      } 
     ); 
    }); 
} 
+0

,teted this,但它不工作.number返回爲undefined索引。 –

+0

請給我們一個例如在[jsfiddle.net](http://jsfiddle.net)或[jsbin.com](http://jsbin.com)上加上標記和JavaScript,以便我們可以對它進行試驗 – Andreas

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

    }); 
}); 
2

你應該使用$阿賈克斯{})函數代替$。員額。

$.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來做到這一點(也許序列化這兩個數組,或將兩個數組合併成一個數組,或者將這兩個數組組合到一起一個在傳遞到服務器之前,如果你能給我一個關於你的表單的樣子,我會更具體。