2015-07-15 4 views
0

Мне нужно отправить данные на URL-адрес, не отправляя форму и перезагружая страницу, но я не слишком хорош с JQuery. Как бы я исполняю что-то вдоль линий этого HTML:Отправить массив ввода с jquery Сообщение без отправки формы

<input type="text" name="name"> 
<input type="text" name="stuff[]"> 
<input type="text" name="stuff[]"> 
<input type="text" name="stuff[]"> 
<input type="text" name="stuff[]"> 
<button onclick="send()">send</button> 

JQuery:

function send() { 
params= {'name': $('#name').val(), 'stuff': $('#stuff[]').val()}; 
$.post("url/test", params); 
} 
+0

И что это за ошибка в этом коде? – Satya

+0

это действительно не работает, это то, что я логически догадываюсь, как это сделать. – Chaosjosh

+0

@Chaosjosh - Я сделал откат по вашему последнему править по двум причинам: 1. он нарушает мой ответ; 2. Вы создали незаконный HTML. Вам не разрешено иметь несколько элементов, имеющих один и тот же идентификатор, но вам разрешено иметь несколько вводов, имеющих одно и то же имя. – Amit

ответ

2

Вы можете получить все значения всех входов, названных "материал []", как это:

$('#stuff[]').map(function() { return $(this).val(); }).get().join() 

Это даст вам строку, объединяющую все значения, разделенные запятыми.

Используйте, что внутри вашего кода, как это:

function send() { 
    params= {'name': $('#name').val(), 
    'stuff': $('input[name="stuff[]"]').map(function() { 
     return $(this).val(); }).get().join()}; 
    $.post("url/test", params); 
} 
+0

, используя это, дает мне ошибку синтаксиса 'unrecognized expression: #stuff []' – Chaosjosh

+0

@Chaosjosh - извините, попробуйте сейчас – Amit

+0

yup, спасибо вам за помощь – Chaosjosh

3

Кроме того, вы могли бы относиться к нему ближе к традиционной форме и использовать метод .serialize().

HTML

<form name="myForm"> 
    <input type="text" name="name" /> 
    <input type="text" name="stuff[]" /> 
    <input type="text" name="stuff[]" /> 
    <input type="text" name="stuff[]" /> 
    <input type="text" name="stuff[]" /> 
    <input type="submit" value="Send" /> 
</form> 

JQuery

$(function(){ 
    $('form[name="myForm"]').on('submit', function(e){ 
     e.preventDefault(); // This prevents the form from actually submitting like a traditional form. 
     var formData = $(this).serialize(); // Gathers the form field values 
     $.post('url/test', formData, function(data){ 
      alert(data); // This is the callback that will handle the response from the server. 
     }); 
    }); 
}); 

Вот DEMO. Надеюсь это поможет!

0

Возможно, вы можете использовать цикл for для итерации по элементам, а затем поместить их все в массив.

Смежные вопросы