2016-06-16 8 views
0

Djangoのウェブサイトで、データベースの一致のフィールド入力を確認しようとしています。私はDjangoの.pyファイルで検索機能を持っていますが、ページロード後にそれらを実行することができないので、私はJavaScript POST要求が最良のオプションであると仮定しています。Django Javascript POSTリクエスト

<input id="this_field" onblur="querySomething()"> 

は数多くありますJS POSTの質問SO [123など]、しかし、私は私のために働くためにそれらのいずれかを取得することができていません。私は検索フィールドのような入力を処理し、(JSとその他)、それを提出した場合

function querySomething(){ 
    $.ajax({ 
     type: "POST", 
     url: "/my/url/", 
     data: {"check_this": "123-456789",}, 
     success: function() { 
     alert('success'); 
     } 
    }); 

あるいは、

function postSearch() { 
    $.post("/my/url/", 
    { 
     "check_this": "123-456789", 
    }, 
    function(data, status){ 
     alert("Data: " + data + "\nStatus: " + status); 
    }) 
} 

それが正常に動作します:ここに行くのに便利な何かを得るために、私の多くの試みの一つです。しかし、ユーザーがページの残りの部分を記入するのに役立つ結果を提供しようとしているので、ユーザーのフォーカスがフィールドを離れるとすぐに同じページで結果を表示する必要があります。

私の{% csrf_token %}トークンがここでプレーするのか分かりません。コンソールやサーバーのログにエラーやメッセージが表示されません。

//コードの編集されたバージョンになりまし読み:

function querySomething(){ 
    $.ajax({ 
     type: "POST", 
     url: "/my/url/", 
     headers: { 
      "Content-Type": "application/json", 
      "HTTP_GROUP_NAME": "groups_name", 
     }, 
     data: { 
      "check_this": $('#this_field').val(), 
      "csrfmiddlewaretoken": "{{csrf_token}}", 
     }, 
     success: function(data){ 
      console.log("success"); 
      console.log(data); 
     }, 
     failure: function(data){ 
      console.log("failure"); 
      console.log(data); 
     }, 
    }); 
    alert('marcusShep function ran.') 
} 

答えて

1

あなたはハード"check_this": "123-456789",とポストデータをコーディングしています。

要素を作成していないため、POSTではなくGETを使用できます。しかし、あなたはいくつかを取得しています。

また、failure関数を定義していません。これはかなりのデバッグに役立ちます。ここに貼り付け可能なミスを制限するためにコード化された

form django.http import JsonResponse 

def foo(request, *a, **kw): 
    # Notice I didn't directly try to access request.GET["check_this"] 
    search_value = request.GET.get("check_this", None) 
    if search_value: 
     data = dict() 
     # Finding some data that you want. 
     data["result"] = MyModel.objects.filter(name=str(search_value)) 
     # Using Django's beautiful JsonResponse class 
     # to return your dict as JSON. 
     return JsonResponse(data, verify=false) 
+0

ハード:

$.ajax({ type: "GET", url: "/my/url/", data: { "check_this": $("#this_field").val(), }, success: function(data){ console.log("success"); console.log(data); }, failure: function(data){ console.log("failure"); console.log(data); }, }); 

あなたのビューは、その後のようになるはずです。前者は隠された ' whyeliah

+0

私の回答が – marcusshep

+0

@whyeliahに更新されました。 – marcusshep