2016-04-08 30 views
-1

我想删除数据库中的1行数据。当我点击按钮删除然后显示一个对话框来确认。但是,当我使用Ajax我无法删除。请帮帮我! 这是我的看法代码如何在python中调用def到ajax

def company_delete(request): 
if request.method == 'POST': 
    company = Company.objects.get(pk=int(QueryDict(request.body).get('postpk'))) 
    company.delete() 
    response_data = {} 
    response_data['mgs'] = 'Company was deleted' 
    return HttpResponse(
     json.dumps(response_data), 
     content_type="application/json" 
    ) 
else: 
    return HttpResponse(
     json.dumps({"nothing to see": "this isn't happening"}), 
     content_type="application/json" 
    ) 

这是我的html代码:

<div class="form-group"> 
        <div class="col-lg-offset-2 col-lg-10"> 
         <a id="opener" type="submit" class="btn btn-danger">Delete</a> 
        </div> 
        <div id="dialog" title="Are you sure?"> 
         <p>Some helpful info here</p> 
        </div> 
       </div> 

这是我的jQuery代码

$(function() { 
     $("#dialog").dialog({ 
      autoOpen: false, 
      resizable: false, 
      height: 140, 
      modal: true, 
      show: { 
       effect: "blind", 
       duration: 1000 
      }, 
      hide: { 
       effect: "explode", 
       duration: 1000 
      }, 
      buttons: { 
       "Yes": function delete_company(companyid) { 
        $.ajax({ 
         type: "POST", 
         url: "company_delete/", 
         data: { postpk : companyid }, 
         success: function (json) { 
          $('#dialog' + companyid).hide(); 
          console.log("company deletion successful"); 
          $(this).dialog("close"); 
         } 
        }); 
       }, 
       Cancel: function() { 
        $(this).dialog("close"); 
       } 
      } 
     }); 
     $("#opener").click(function() { 
      $("#dialog").dialog("open"); 
     }); 
    }); 

这是我的网址:

urlpatterns = [ 
url(r'^delete/(?P<company_id>\d+)/$', views.company_delete, name='company_delete'),] 
+0

@TommyOliver尝试使用浏览器调试器的“网络”选项卡(F12)查看您的请求是否将其发送到Web服务器。 – Selcuk

+0

url(r'^ delete /(?P \ d +)/ $',views.company_delete,name ='company_delete'), –

回答

0

它看起来像你的URL模式n期望调用来到“delete/<company_id>”,但您的JQuery ajax url指向“company_delete”,并且您正在执行一个POST,它不会在URL中发送公司ID。

您的意思是在AJAX中给“公司/删除”吗? (这是有道理的,如果你的urls.py是一个应用程序的一部分,并有另一个顶级/项目级别urls.py,“公司”作为url模式)

而删除它最好使用'type': '删除'在jquery ajax调用(并在此Django视图做出必要更改)