2015-03-24 3 views
0

У меня есть форма, в которой есть раскрывающийся список действий и ряд флажков с идентификаторами, я хочу захватить все отмеченные флажки и выбранное действие и отправить их через ajax на другую страницу. Текущая попытка - это массив, что еще я могу попробовать?добавление элементов в массив jquery

<select name='action' id='action'> 
    <option value=''></option> 
    <option value='reassign'>Reassign</option> 
    <option value='merge'>Merge</option> 
    <option value='move'>Move</option> 
</select> 

$('select').on('change',$('#action'),function(){ 
    data = []; 
    $.each($('input:checkbox'),function(e,i){ 
     if($(this).is(':checked')){ 
      data[e] = $(this).attr('id'); 
     } 
    }); 
    data.add = $(this).val(); 
    $.ajax({ 
     type:"POST", 
     data:{data:data}, 
     url:"bulkChange.php", 
     success: function(result){ 
      alert(result); 
     } 
    }); 
}); 

В настоящее время я не вижу действия, добавленные в массив. print_r ($ _ POST) на bulkChange.php показывает:

[data] => Array 
    (
     [0] => c_32481 
     [1] => c_32477 
     [2] => 
     [3] => 
     [4] => 
     [5] => c_32308 
    ) 

я хотел бы видеть:

[data] => Array 
    (
     [0] => c_32481 
     [1] => c_32477 
     [2] => 
     [3] => 
     [4] => 
     [5] => c_32308 
     [6] => merge 
    ) 
+0

Может быть несущественными, но где 'i' у вас есть в вашем' each' функции обработчика используется? – callback

+0

, оставшийся от предыдущих попыток. его можно удалить. – bart2puck

+0

Может включать 'input'' html'? from '$ ('input: checkbox')'? – guest271314

ответ

1

В своем коде, вместо того, чтобы использовать

data.add = $(this).val(); 

использование data.push($(this).val());

Это должно сделать.

0
$('select').on('change',$('#action'),function(){ 
        data = []; 
        $.each($(this).find('option'),function(e,i){ 
          if($(this).is(':checked')){ 
          data[e] = $(this).attr('value'); 
          } 
        }); 
        console.log(data); 
        }); 

это построить ли массив данных, как вы хотите его?

+0

нет, это wasnt soronbe, callback решил это думал, спасибо – bart2puck

0

Попробуйте это вместо того, чтобы использовать

data.add = $ (это) .val();

$('select').on('change',$('#action'),function(){ 
 
    data = []; 
 
    $.each($('input:checkbox'),function(e,i){ 
 
     if($(this).is(':checked')){ 
 
      data[e] = $(this).attr('id'); 
 
     } 
 
    }); 
 
    //array push 
 
    data.push($(this).val()); 
 
    
 
    $.ajax({ 
 
     type:"POST", 
 
     data:{data:data}, 
 
     url:"bulkChange.php", 
 
     success: function(result){ 
 
      alert(result); 
 
     } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script> 
 
<select name='action' id='action'> 
 
    <option value=''></option> 
 
    <option value='reassign'>Reassign</option> 
 
    <option value='merge'>Merge</option> 
 
    <option value='move'>Move</option> 
 
</select>

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