2012-11-29 56 views
0

我试过所有的东西here,我必须缺少一些东西,因为我的ajax后Django没有返回任何东西。我已经明白了这一点,只是试图让它工作,没有喜悦。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() { 
     $.ajax({ 
      url:'/chargeback/savepe/', 
      data: $("#peUpdateForm").serialize(), 
      type: "POST", 
      success: function(e) { 
       alert("success"); 
      }, 
      error: function(e) { 
       alert("failed"); 
      } 
     }); 
     return false; 
    }); 

我也尝试了jQuery post方法:

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

我没有得到任何东西。没有得到我的任何警报。没有从视图中得到任何错误(如果我直接导​​航到视图,我会得到预期的{'msg':'failed'}},所以json响应没问题。我能想到的事情是我的jQuery代码是错误的,但我想不通的地方,并没有错误在控制台中。我测试过,在控制台中,

$('#peUpdateForm').serialize() 

和我期望值拉我的头发在这里...谢谢

编辑:。添加HTML作为我的POST方法时,我把一个断点甚至没有得到调用,因此可能出现了问题怎么跟我提交的是设置。

<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

您是否在Firebug/chrome检查器中检查了Network选项卡?请求是否转到相应的URL?什么是回应? – msc

+0

我有,请求不会。这个帖子和ajax方法都被调用,这就是为什么我只发布了我的HTML,看看我的提交调用是否是问题。 – Shawn

+1

你在哪里提交按钮? –

回答

1

据我所知,这里是把事情做对了,如果你想保持外的按钮:

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

这是因为`$( '#形式')提交()仅在您将提交按钮保留在表单标签内时才会被调用。

+1

对于帮助我理解您可以在不实际提交的情况下使用post或ajax调用特别有用。这将是我使用的方法。谢谢! – Shawn