2017-11-14 3 views
0

안녕하세요, 다음 확인란을 선택하면 여러 확인란의 선택을 저장하도록 POST 요청을 보냅니다. 콘솔을 볼 때 사용자가 버튼을 눌렀을 때 GET 요청을 표시합니다. 이유는 무엇입니까? POST 요청을 단추 누르기로 보내지 않았습니다.

<form action=""> 
    <div class = "container"> 

     <div class="jumbotron"> 
     <div class="container"> 
      <h1 class="jumbotron-heading">Available Application List</h1></br> 
     </div> 
      <div class="container"> 

       <div class="row"> 
        <div class="col"> 
        <h3>Financial</h3> 

          <ul> 
          {% for app in fingrouplist %} 
          <li><input type="checkbox" name="request_reports" value ="{{app.report_id}}" > {{ app.report_name_sc }}</li> 
          {% endfor %} 
          </ul> 

        </div> 
        <div class="col"> 

        <h3>Care Assure</h3> 
        <div class = "row"> 

          <ul> 
          {% for app in cagrouplist %} 
          <li><input type="checkbox" name="request_reports" value ="{{app.report_id}}" > {{ app.report_name_sc }}</li> 
          {% endfor %} 
          </ul> 

        </div> 

        <div class = "row"> 
        <h3>Performance Improvement</h3> 

          <ul> 
          {% for app in pigrouplist %} 
          <li><input type="checkbox" name="request_reports" value ="{{app.report_id}}" > {{ app.report_name_sc }}</li> 
          {% endfor %} 
          </ul> 

        </div> 

        <div class = "row"> 
        <h3>Supply Chain</h3> 

          <ul> 
          {% for app in scgrouplist %} 
          <li><input type="checkbox" name="request_reports" value ="{{app.report_id}}" > {{ app.report_name_sc }}</li> 
          {% endfor %} 
          </ul> 

        </div> 

        <div class = "row"> 
        <h3>DSS Monitoring</h3> 

          <ul> 
          {% for app in dssgrouplist %} 
          <li><input type="checkbox" name="request_reports" value ="{{app.report_id}}" > {{ app.report_name_sc }}</li> 
          {% endfor %} 
          </ul> 

        </div> 

        <div class = "row"> 
        <h3>Other DSS Applications</h3> 

          <ul> 
          {% for app in othgrouplist %} 
          <li><input type="checkbox" name="request_reports" value ="{{app.report_id}}" > {{ app.report_name_sc }}</li> 
          {% endfor %} 
          </ul> 

        </div> 

       </div> 
        <div class="col"> 
        <div class="row"> 

        <h3>Behavior Health/Rehab</h3> 

          <ul> 
          {% for app in bhgrouplist %} 
          <li><input type="checkbox" name="request_reports" value ="{{app.report_id}}" > {{ app.report_name_sc }}</li> 
          {% endfor %} 
          </ul> 

        </div> 
        <div class="row"> 
        <h3>Clinical Excellence</h3> 
          <ul> 
          {% for app in cegrouplist %} 
          <li><input type="checkbox" name="request_reports" value ="{{app.report_id}}" > {{ app.report_name_sc }}</li> 
          {% endfor %} 
          </ul> 

        </div> 
        <div class="row"> 
        <h3>Perfomance Service Group</h3> 

          <ul> 
          {% for app in psggrouplist %} 
          <li><input type="checkbox" name="request_reports" value ="{{app.report_id}}" > {{ app.report_name_sc }}</li> 
          {% endfor %} 
          </ul> 

        </div> 
        <div class="row"> 
        <h3>All Applications</h3> 

          <ul> 
          {% for app in allgrouplist %} 
          <li><input type="checkbox" name="request_reports" value ="{{app.report_id}}" > {{ app.report_name_sc }}</li> 
          {% endfor %} 
          </ul> 

        </div> 
        </div> 


       </div class="row"> 

       </br></br> 
       <a href="{% url 'requestaccess' %}" /> 
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
       <script> 
       $(document).ready(function(){ 
        var selected_items = []; 
        $(".checkbox").click(function(){ 
         var selected_item = $(this).val(); 
         var index = selected_items.indexOf(selected_item); 
         if(index == -1) 
         { 
          selected_items.push(selected_item); 
         } 
         else{ 
          selected_items.splice(index, 1); 
         } 
        }); 
        $("#submit-button").click(function(){ 
         $.ajax({ 
          url: '/requestaccess/', 
          data: {'request_reports': selected_items.join(","), 'csrfmiddlewaretoken': {{csrfmiddlewaretoken}} }, 
          dataType: 'json', 
          type: 'post', 
          success: function (data) { 
          } 
         }); 
        }); 
       }) 
       </script> 

       <input class="btn btn-primary" type="button" method = "POST" value="Request Access"> 
       </div> 

    </form> 

사용자가 체크 박스를 선택 프로파일 페이지에 대한 도면이다.
def profile(request): 
     owner = User.objects.get (formattedusername=request.user.formattedusername) 
     reportdetail = QVReportAccess.objects.filter(ntname = owner.formattedusername, active = 1).values('report_name_sc') 

     reportIds = QVReportAccess.objects.filter(ntname = owner.formattedusername).values_list('report_id', flat=True) 
     reportaccess = QvReportList.objects.filter(report_id__in= reportIds).values_list('report_name_sc', flat = True) 
     reportGroups = QVReportAccess.objects.filter(ntname = owner.formattedusername).values_list('report_group_id', flat=True) 
     reportlist = QvReportList.objects.filter(~Q(report_id__in= reportIds)).exclude(active=0) 
     allreportgrouplist = QvReportList.objects.filter(~Q(report_id__in= reportIds)).filter(report_group_id = 100) 
     bhreportgrouplist = QvReportList.objects.filter(~Q(report_id__in= reportIds)).filter(report_group_id = 200) 
     cereportgrouplist = QvReportList.objects.filter(~Q(report_id__in= reportIds)).filter(report_group_id = 500) 
     finreportgrouplist = QvReportList.objects.filter(~Q(report_id__in= reportIds)).filter(report_group_id = 600) 
     careportgrouplist = QvReportList.objects.filter(~Q(report_id__in= reportIds)).filter(report_group_id = 800) 
     pireportgrouplist = QvReportList.objects.filter(~Q(report_id__in= reportIds)).filter(report_group_id = 1100) 
     screportgrouplist = QvReportList.objects.filter(~Q(report_id__in= reportIds)).filter(report_group_id = 1200) 
     dssreportgrouplist = QvReportList.objects.filter(~Q(report_id__in= reportIds)).filter(report_group_id = 1300) 
     psgreportgrouplist = QvReportList.objects.filter(~Q(report_id__in= reportIds)).filter(report_group_id = 1400) 
     othreportgrouplist = QvReportList.objects.filter(~Q(report_id__in= reportIds)).filter(report_group_id = 99999) 

#  if request.method == 'POST': 
#   reportnamesc = request.POST.get('report_name_sc', '') 
#   checked = request.POST.get('request_reports', '') 
#   request_reports = #request_reports.objects.get(report_name_sc=reportnamesc) 
#   request_reports.request_reports = checked 
#   request_reports.save() 

     args = {'user':owner, 'applicationaccess':reportaccess, 'applicationlist':reportlist, 'bhgrouplist':bhreportgrouplist, 'cegrouplist':cereportgrouplist, 'fingrouplist':finreportgrouplist 
       , 'cagrouplist':careportgrouplist, 'pigrouplist':pireportgrouplist, 'scgrouplist':screportgrouplist, 'dssgrouplist':dssreportgrouplist, 'psggrouplist':psgreportgrouplist 
       , 'othgrouplist':othreportgrouplist, 'allgrouplist':allreportgrouplist} 

     return render(request, 'accounts/profile.html', args) 

하지만, 내 게시물은 결코 난 단지 확인 된 보고서에 끌어 내 폼에 request.POST [ 'request_reports을'] 할 수있는 내 값을 저장하지 않습니다 아약스를 발생하지로.

하나의 html 템플릿에서 양식으로 사용자 선택 항목으로 보고서를 줄이는 작업을 수행하는 더 좋은 방법이 있다면 제안을 할 수 있습니다.

답변

0

양식을 제출하는 단추의 기본 동작을 방지하지 않습니다. 그러면 기본 동작 인 GET이 사용됩니다.

클릭 이벤트 처리기를 event 매개 변수로 만들고 event.preventDefault();으로 전화하십시오.

+0

대단한 일을 해준 Daniel에게 감사드립니다. 버튼에 id = "submit-button"을 포함시키지 않은 것을 알았습니다. "submit-button"이라고합니다. – student101

+0

추가 질문이 있습니다. 단추를 누를 때 내 URL에서 요청을 확인할 수 있습니다. 경로가 올바르게 작동하려면 URL에서 무엇을 변경해야합니까? http://127.0.0.1:8000/account/profile/?request_reports=54&request_reports=42&request_reports=18 내 URL의 모양은 다음과 같습니다. URL.py에는 url (r '^ requestaccess/$', views.requestaccess, name = 'requestaccess') – student101

+0

죄송합니다. 질문에 답변하지 않았습니다. –

관련 문제