2013-08-15 2 views
0

Я пытаюсь отправить массив идентификаторов строк на контроллер, чтобы выполнить пакетное обновление, я думаю, что я уже сделал часть массива (я не очень хорошо разбираюсь в jQuery , все еще изучая), но я не знаю, как отправить контроллеру массив, содержащий идентификаторы строк для обновления.Отправить массив jquery для контроллера для обработки в Symfony2

Вот мой прутик:

{% block javascripts %} 
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script> 
<script> 
$(document).ready(function() { 
    $('#selectall').click(function() { 
     $('.selectedId').prop('checked', isChecked('selectall')); 
    }); 
}); 
function isChecked(checkboxId) { 
    var id = '#' + checkboxId; 
    return $(id).is(":checked"); 
} 
function resetSelectAll(id) { 
    // if all checkbox are selected, check the selectall checkbox 
    // and viceversa 
    if ($(".selectedId").length == $(".selectedId:checked").length) { 
     $("#selectall").attr("checked", "checked"); 
     var ids = []; 
     ids.concat(id); 
    } else { 
     $("#selectall").removeAttr("checked"); 
     removeItem = id; 
     ids = jQuery.grep(arr, function(value) { 
     return value != removeItem; 
     }); 
    } 

    if ($(".selectedId:checked").length > 0) { 
     $('#edit').attr("disabled", false); 
    } else { 
     $('#edit').attr("disabled", true); 
    } 
} 

    </script> 
{% endblock %} 

{% block body %} 

<table> 

           <thead> 
            <tr> 
             <th><input type="checkbox" id="selectall"></th> 
             <th>{{ 'general.date'|trans }}</th> 
             <th>{{ 'general.order_number'|trans }}</th> 
             <th>{{ 'general.description'|trans }}</th> 
             <th>{{ 'general.company_name'|trans }}</th> 
             <th>{{ 'general.name'|trans }}</th> 
             <th>{{ 'form.status'|trans }}</th> 
             <th>WinPoints</th> 
            </tr> 
           </thead> 
             {% for details in details %} 
           <tbody> 
            <tr> 

             <td><div align="center"><input type="checkbox" class="selectedId" name="selectedId" onclick="resetSelectAll({{details.id}});" /></div></td> 
             <td>{{ details.date | date("m/d/Y") }}</td> 
             <td>{{ details.order_number }}</td> 
             <td>{{ details.description }}</td> 
             <td>{{ details.company }}</td> 
             <td>{{ details.name }}</td> 
             <td>{{ details.status }}</td> 
             <td>{{ details.winpoints }}</td> 

            </tr> 
           </tbody> 
             {% endfor %} 

          </table> 
<form action="{{ path('advd_group_batch_p_r_status') }}" method="post" {{ form_enctype(formBase) }}> 
            {{ form_widget(form) }} 
            <input class="input_button" type="submit" value="Procesar" /> 
           </form> 

{% endblock %} 

Любые идеи? Кроме того, если вы видите какие-либо ошибки в коде jquery, сообщите мне, что я делаю неправильно, я не смог проверить его, потому что я не знаю, как отправить массив на контроллер.

Благодарим за любую помощь, которую вы можете мне предложить.

+0

Вы пробовали ajax '$ _POST'? – u54r

+0

Привет, нет, я понятия не имею, как использовать любой из этих – Splendonia

ответ

0
{% block javascripts %} 
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script> 
<script> 

$(document).ready(function() { 
$('#selectall').click(function() { 
    $('.selectedId').prop('checked', isChecked('selectall')); 
}); 
}); 
function isChecked(checkboxId) { 
var id = '#' + checkboxId; 
return $(id).is(":checked"); 
} 
function resetSelectAll(id) { 
// if all checkbox are selected, check the selectall checkbox 
// and viceversa 
if ($(".selectedId").length == $(".selectedId:checked").length) { 
    $("#selectall").attr("checked", "checked"); 
    var ids = []; 
    ids.concat(id); 
} else { 
    $("#selectall").removeAttr("checked"); 
    removeItem = id; 
    ids = jQuery.grep(arr, function(value) { 
    return value != removeItem; 
    }); 
} 

if ($(".selectedId:checked").length > 0) { 
    $('#edit').attr("disabled", false); 
} else { 
    $('#edit').attr("disabled", true); 
} 

} 
$(function(){ 
$('.input_button').click(function(){ 
    $.ajax({ 
    url:"advd_group_batch_p_r_status", 
    dataType:'json', 
    type:'post', 
    data:$("#formC").serialize() 
    }); 
}); 
}); 

</script> 
{% endblock %} 

{% block body %} 

<form action="{{ path('advd_group_batch_p_r_status') }}" method="post" {{ form_enctype(formBase) }} id="formC"> 

         <table> 

          <thead> 
           <tr> 
            <th><input type="checkbox" id="selectall"></th> 
            <th>{{ 'general.date'|trans }}</th> 
            <th>{{ 'general.order_number'|trans }}</th> 
            <th>{{ 'general.description'|trans }}</th> 
            <th>{{ 'general.company_name'|trans }}</th> 
            <th>{{ 'general.name'|trans }}</th> 
            <th>{{ 'form.status'|trans }}</th> 
            <th>WinPoints</th> 
           </tr> 
          </thead> 
            {% for details in details %} 
          <tbody> 
           <tr> 

            <td><div align="center"><input type="checkbox" class="selectedId" name="selectedId" onclick="resetSelectAll({{details.id}});" /></div></td> 
            <td>{{ details.date | date("m/d/Y") }}</td> 
            <td>{{ details.order_number }}</td> 
            <td>{{ details.description }}</td> 
            <td>{{ details.company }}</td> 
            <td>{{ details.name }}</td> 
            <td>{{ details.status }}</td> 
            <td>{{ details.winpoints }}</td> 

           </tr> 
          </tbody> 
            {% endfor %} 

         </table> 
           {{ form_widget(form) }} 
           <input class="input_button" type="submit" value="Procesar" /> 
          </form> 
        </div> 
       </div> 



         </div> 
        </div> 
       </div> 

{% endblock %} 
+0

в порядке, и как я могу отправить массив там? – Splendonia

+0

Дайте вашей форме идентификатор и замените '# FORMNAME' своим именем формы. Все данные 'serialized()' и будут отправлены на ваш контроллер. – u54r

+0

О, я вижу! позвольте мне попробовать. – Splendonia

0

У меня есть форма бюллетеня в моем приложении, которое опубликовано в следующем JavaScript:

<script type="text/javascript"> 
    function subscribeButtonPressed() { 

     $.post('{{path('mailchimp_subscribe')}}', 
       { 
        EMAIL: $("#mce-EMAIL").val(), 
        listid: $("#listid").val() 
       }, 
       function (response) { 
        ga('send', 'pageview', '{{ path('mailchimp_subscribe') }}'); 
        console.log(response); 
        if (response.code == 100 && response.success) {//dummy check 
         var alert = '<div class="span12 padding20" id="formContainer">\n\ 
           <h1>Great!</h1>\n\ 
           </div>'; 
         $('#formContainer').fadeOut('slow', function() { 
          $('#thanksContainer').append(alert).hide().fadeIn('slow'); 
         }); 

        } 

       }, 'JSON'); 
    } 

    $(document).ready(function() { 
     $('#mc-embedded-subscribe') 
       .click(function (event) { 
        var btn = $(this); 
        if ($("#mce-EMAIL").val() != "") { 
         event.preventDefault(); 
         btn.button('loading'); 
         subscribeButtonPressed(); 
        } 
       }); 



    }); 
</script> 

Я также журнал событий с помощью Google Analytics и показать некоторый ответ HTML. Но я думаю, вы поняли, что просто используйте $ .post с тем путем, куда вы хотите отправить его. И я выбираю одиночные значения моей формы, но вы также можете просто отправить всю форму.

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