2016-04-08 3 views
-1

データベース内の1行のデータを削除します。削除ボタンをクリックすると、確認するダイアログが表示されます。しかし、私がAJAXを使用しているとき、私は削除できません。私を助けてください! これはこれは私のhtmlコードである私の見解コード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" 
    ) 

です:

<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"); 
     }); 
    }); 

である。これは、私のURLです:

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"を指していて、URLに会社IDを送信しないPOSTを実行しています。

AJAXで「会社/削除」を指定しましたか? (あなたのurls.pyがアプリの一部であり、URLパターンとして "company"という別のトップレベル/プロジェクトレベルのurls.pyがある場合は意味があります)

そして、削除の場合は 'type'を使用する方が良いでしょう。

関連する問題