2012-11-29 2 views
0

모든 내용을 시도했습니다. here, 장고에 대한 아약스 게시물은 아무 것도 반환하지 않으므로 뭔가 빠뜨린 것 같습니다. 나는이 시점에서 맨손으로 뼈를 가졌습니다. 단지 그것을 작동시키고 기쁘게하려고 노력했습니다.django는 응답 양식을 보내지 않고 양식을 제출합니다.

내보기 :

def saveProjectEntry(request): 
    form = ProjectEntryUpdateForm(request.POST) 

    if form.is_valid(): 
     msg = json.dumps({'msg':'success'}) 
     return HttpResponse(msg, mimetype='application/json') 
    else: 
     msg = json.dumps({'msg':'failed'}) 
     return HttpResponse(msg, mimetype='application/json') 

내 url.py 항목 :

url(r'^chargeback/savepe/$','chargeback.views.saveProjectEntry'), 

내 jQuery를 :

$('#peUpdateForm').submit(function(e){ 
    $.post('/chargeback/savepe/', $('#peUpdateForm').serialize(), function(data){ 
     alert("success"); 
    }); 
    e.preventDefault(); 
}); 
:

$('#peUpdateForm').submit(function() { 
     $.ajax({ 
      url:'/chargeback/savepe/', 
      data: $("#peUpdateForm").serialize(), 
      type: "POST", 
      success: function(e) { 
       alert("success"); 
      }, 
      error: function(e) { 
       alert("failed"); 
      } 
     }); 
     return false; 
    }); 

내가 또한 jQuery를 포스트 방법을 시도

나는 아무것도 얻지 못하고있다. 내 경보를받지 못했습니다. 보기에서 오류가 발생하지 않습니다. (브라우저에 표시되는 { 'msg': 'failed'} 브라우저에서 직접보기로 이동하면 json 응답이 올바르게 표시됩니다 .URL이 올바른보기를 호출합니다. 내가 생각할 수있는 것은 내 jQuery 코드가 잘못이지만, 어디 알아낼 수 있으며, 콘솔에. 제가 테스트 한 오류는 콘솔에 없다는

$('#peUpdateForm').serialize() 

내가 얻을 기대치. 여기 내 머리카락을 당겨 ... 감사합니다.

EDIT : 거기에 중단 점을 배치 할 때 내 게시물 메서드로 HTML을 추가해도 호출되지 않습니다. 그래서 뭔가가 내 제출 방법에 문제가있을 수 있습니다. 설정하십시오.

당신이 외부 버튼을 유지하려는 경우
<div class="ui-dialog ui-widget ui-widget-content ui-corner-all ui-draggable ui-resizable ui-dialog-buttons" style="outline: 0px; z-index: 1002; position: absolute; height: auto; width: 376px; top: 75px; left: 408px; display: block;" tabindex="-1" role="dialog" aria-labelledby="ui-id-8"><div class="ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix"> 
<span id="ui-id-8" class="ui-dialog-title">Project Entry Update</span><a href="#" class="ui-dialog-titlebar-close ui-corner-all" role="button"><span class="ui-icon ui-icon-closethick">close</span></a></div> 
<div id="addPEForm" style="width: auto; min-height: 0px; height: 365px;" class="ui-dialog-content ui-widget-content" scrolltop="0" scrollleft="0"> 
    <form method="post" id="peUpdateForm" action=""> 
    <div style="display:none"> 
     <input type="hidden" name="csrfmiddlewaretoken" value="wvzwSBl87vC1tbkbdfxsD82GnjtvJCSz"></div> 

    <p><label for="id_departmentid">Department:</label> 
    <select id="id_departmentid" class="projEntryControl" name="departmentid"> 
     <option value="" selected="selected">Choose a Department</option> 
     <option value="1">ABND</option> 
     <option value="2">ATT</option> 
     <option value="3">AVI</option> 
     <option value="4">CCS</option> 
     <option value="5">PBW</option> 
    </select></p> 
    <p><label for="id_projectid">Project:</label> 
    <select id="id_projectid" class="projEntryControl" name="projectid"> 
     <option value="-1">Choose a Project</option> 
     <option value="undefined">Bexar Street</option> 
     <option value="undefined">Chalk Hill</option> 
     <option value="undefined">Crown Road</option> 
    </select> 
    </p> 
    <p><label for="id_progNumId">Program Number:</label> 
    <select id="id_progNumId" class="projEntryControl" name="progNumId"> 
     <option value="" selected="selected">Choose a Program Number</option> 
     <option value="1">31664</option> 
     <option value="2">DD-7081</option> 
    </select></p> 
    <p><label for="id_hoursWorked">Hours Worked:</label> 
    <input name="hoursWorked" value="0.0" class="projEntryControl" maxlength="5" type="text" id="id_hoursWorked"></p> 
    <p><label for="id_notes">Notes:</label> 
    <textarea id="id_notes" rows="10" cols="40" name="notes"></textarea></p> 
</form> 
</div> 

...

+0

파이어 버그/크롬 검사기의 네트워크 탭을 확인 했습니까? 요청이 적절한 URL로 이동합니까? 응답은 무엇입니까? – msc

+0

나는 가지고 있고, 요구는 가고 있지 않다. 게시물이나 아약스 메소드가 호출되는 중입니다. 따라서 제출 코드가 문제인지 확인하기 위해 HTML을 게시했습니다. – Shawn

+1

버튼을 어디에서 제출합니까? –

답변

1

AFAIK은, 여기, 바로 그것을 할 수있는 방법 :.

$('#button').on('click', function(){ 
     $.ajax({ 
      data: $('#form').serialize(), 
      ...}); 
}); 

이`때문에 $ ('# 양식')를 제출()는 폼 태그 안에 제출 버튼을 유지하는 경우에만 호출됩니다.

+1

실제로 제출을하지 않고도 게시 또는 아약스 호출을 사용할 수 있음을 이해하는 데 특히 유용합니다. 이것은 제가 사용하는 접근 방식이 될 것입니다. 감사! – Shawn

관련 문제