Python 使用AJAX:DJANGO按行获取选中的所有复选框值

Python 使用AJAX:DJANGO按行获取选中的所有复选框值,python,django,ajax,checkbox,Python,Django,Ajax,Checkbox,我有一个代码,可以从选中复选框的表中选择所有行。首先,我将描述我的表结构 所以这里有很多行,所以我应该选择我需要的服务器和应该执行的操作。因此,如果我有两个服务器ABC和BCD,如果我想执行ABC的开始操作和ABC的停止操作,我应该从第一个复选框中选择相应的服务器,并从与服务器名称相同的行上的复选框中选择相关联的操作。我应该将所有值按行传递给views.py以执行其他操作 所以现在我写了一个代码,即使我没有选中复选框,它也会给我这个值。我也没办法解决这个问题。有人能帮我吗 这是我的AJAX调用

我有一个代码,可以从选中复选框的表中选择所有行。首先,我将描述我的表结构

所以这里有很多行,所以我应该选择我需要的服务器和应该执行的操作。因此,如果我有两个服务器ABC和BCD,如果我想执行ABC的开始操作和ABC的停止操作,我应该从第一个复选框中选择相应的服务器,并从与服务器名称相同的行上的复选框中选择相关联的操作。我应该将所有值按行传递给views.py以执行其他操作

所以现在我写了一个代码,即使我没有选中复选框,它也会给我这个值。我也没办法解决这个问题。有人能帮我吗

这是我的AJAX调用:

 $("[name=ButtonSubmit]").click(function(){
                            var myarrayServer = [];
                            var myarrayStart = [];
                            var myarrayRestart = [];
                            var myarrayStop =[];
                            var message = " ";
                            $(".form-check-input0:checked").each(function() {
                                var row = $(this).closest("tr")[0];
                                message += row.cells[1].innerHTML;
                                message += "   " + row.cells[2].innerHTML;
                                message += "   " + row.cells[3].innerHTML;
                                message += "   " + row.cells[4].innerHTML;
                                var checkedValue = $('#flexSwitchCheckDefaultStart:checked').val();
                                message += "   "+checkedValue;
                                var checkedValue2 = $('#flexSwitchCheckDefaultRestart:checked').val();
                                message += "   "+checkedValue2;

                                // if (row.cells[5].children()[0].is(':checked')) {   
                                //   message += "   " + row.cells[5].children[0].value;
                                // }
                                message += "\n";
                                alert(message);
                                
                     
                             
                            
                             var formdataD = new FormData();
                             formdataD.append('myarrayServer', message);
                           
                             $.ajax({
                                 url: "secondtableonDashboard", //replace with you url
                                 method: 'POST',
                                 data: formdataD,
                                 datatype:'json',
                                 processData: false,
                                 contentType: false,
                                 success: function(data) {
                                  //  alert("message: " + data.message);
                                 },
                                 error: function(error) {
                                  //  alert('error..'+error);


                                 }
                           });
                          });
                       });
下面是HTML:

<tbody id="myTable">
                                               {% for item in objs %}
                                              <tr>
                                                  <td>
                                                    <div class="form-check form-switch">
                                                      
                                                            <input class="form-check-input0" name="Services1" value="{{item.Component}}" type="checkbox" id="flexSwitchCheckDefault">
                                                            <label class="form-check-label0" for="flexSwitchCheckDefault">

                                                    </div>
                                                  </td>
                                                  <td>{{item.ServerName}}</td>
                                                  <td>{{item.Component}}</td>
                                                  <td>{{item.PID}}</td>
                                                  <td>
                                                    {{item.State}}</td>
                                                  <td id="hideInnerHTML">
                                                      <input class="form-check-input1" name="Start" value="START" type="checkbox" id="flexSwitchCheckDefaultStart">
                                                      <!-- <label class="form-check-label1 services" for="flexSwitchCheckDefault"> -->
                                                        Start
                                                  </td>
                                                  <td id="hideInnerHTML">
                                                      <input class="form-check-input2" name="Restart" value="RESTART" type="checkbox" id="flexSwitchCheckDefaultRestart">
                                                      <!-- <label class="form-check-label2 services" for="flexSwitchCheckDefault"> -->
                                                </td>
                                                  <td id="hideInnerHTML">
                                                      <input class="form-check-input3" name="Stop" value="STOP" type="checkbox" id="flexSwitchCheckDefault">
                                                      <!-- <label class="form-check-labe3l services" for="flexSwitchCheckDefault"> -->
                                                </td>
                                                  </tr>
                                                {% endfor %}
                                                </form>
                                                  </tbody>

{objs%中项目的%s}
{{item.ServerName}
{{item.Component}
{{item.PID}
{{item.State}
开始
{%endfor%}

首先,在您的代码中,您使用了具有相同名称的多个ID,因此只需删除该ID或使用类即可。然后,每当单击
按钮提交
时,首先获取
服务器名
,并在内部数组中推送其值。现在,要获取同一行中的其他复选框值,您可以使用
.resest(“tr”).find(“输入[type=checkbox]:checked:not(:first)”)
并将选中的复选框值推送到内部数组中,最后将此内部数组值放到外部数组中,并将其传递给ajax

演示代码

$(“[name=ButtonSubmit]”。单击(函数(){
控制台清除()
var myarrayServer=[];
$(“.form-check-input0:checked”).each(函数(){
var opeartions=[]//用于内部数组
var行=$(此).tr;
//获取服务器名
var server_name=row.find(“td:eq(1)”).text().trim();
push(服务器名称)//推入数组
//获取在同一行中选中的复选框
行.find(“输入[类型=复选框]:选中:不(:第一)”)。每个(函数(){
opeartions.push($(this.val())
})
myarrayServer.push(opeartions)//主数组中的push值
});
console.log(myarrayServer);
var formdataD=new FormData();
append('myarrayServer',myarrayServer');
//这里是ajax呼叫
});

服务器名
组成部分
PID
陈述
开始
重新启动
停止
A.
有些事
1.
跑步
B
有些事
2.
跑步

Send
Hi swati,但我希望它是按行的,就像每一行应该是一个列表一样,这样我将得到类似[[Server1,Start/Stop],[Server2,Start/Stop],…[ServerN,Start/Stop]]