2017-05-03 8 views
-1

AJAXのページでクエリを実行しようとしています。バックエンドはDjangoを使用しています。私のjavascriptのはそうのようなものです:Ajax GET/POST Django、データの扱いが実際にはわからない

$(function(){ 
    $("#form").submit(function(event){ 
     event.preventDefault(); 
     var query = ($("#input-field").val()); 
     $.ajax({ 
      type: "GET", 
      url:"{% url 'search_building' %}", 
      data: { 
       'csrfmiddlewaretoken': '{{ csrf_token }}', 
       'q': query 
      }, 
      success: function(data) { 
       $("#search-results").html(data); 
      } 
     }); 
    }); 
}); 

ページ全体を通り抜けると、私はちょうど結果が表から通ってくるしたいと#検索結果を、追加されます。

また、AjaxでGETまたはPOSTを使用すべきかどうか、csrfトークンを使用する必要があるかどうかについて少し混乱しています。

非常に高く評価されています。


私はそれを理解しました。

私の元のページ1つのビュー、1つのURLを使用して、クエリ

からすべての結果を返されたテンプレートは、私はDjangoのテンプレート言語を使用していたので、私は出力がJSONであることを、次に書きたいdidntはjavascriptを使用して出力を処理します。

私は結果をレンダリングするための2つ目のテンプレートを作成しました。クエリを処理するためのビューを作成し、新しいビューにクエリを送信して新しいテンプレートの結果を古いものにレンダリングするためにajaxを使用しました。

+1

'AjaxでGETまたはPOSTを使うべきか、csrfトークンを使うべきかについて、ちょっと混乱しています。これはすべて、あなたが呼んでいるエンドポイントに依存します。 –

+0

私はあなたが何を混乱させるか分かりません。データベースを更新するためにデータを送信する場合は、POSTを使用します。データの更新をリクエストする場合は、GETを使用します。テーブルの内容を送信するだけの場合は、その部分のみを送信するようにビューを作成する必要があります。 –

+0

@Daniel Roseman Idは、データを取得してもPOSTをajaxとcsrfトークンで使用することが推奨されていることを2,3回読んだ(例をいくつか見てきた)。 – OrangeBubbles

答えて

0

バックエンドからの応答をjson形式で返します。 これは、応答データを使用するのが非常に簡単になり、好きなように使用することができます。

ページ全体の読み込みの背景には、コンテキストを使用してテンプレートをレンダリングする理由があります。

ajaxリクエストの場合、json形式のレスポンスがデータ処理に適しています。

また、新しいインスタンスなどのデータベースに書き込む場合は、POSTリクエストを使用してください。 あなたが必要とするのは、apiがデータを提供することを期待するいくつかのクエリまたは状況に対してAPIを呼び出すことだけです.GETリクエストを使用することができます。

これはすべて私が学んだことの私のバージョンです。 あなたはあなたが尋ねたことを願っています!

+0

@ Fazil Bin Zaid助けてくれてありがとう! is_ajax()でテンプレートとjsonの両方を扱うビューを書くことをお勧めしますか? – OrangeBubbles

+0

試して試してみてください...それは学ぶ唯一の方法です... !! – zaidfazil

+0

私はそれを理解しました!私はDjangoのテンプレート言語を使用する方が好きです.Jsonレスポンスのためにjavascript全体を書くのではなく、その応答がhtmlになったら最高です。レスポンスを生成する新しいビューを作成し、結果を処理するためのテンプレートを作成し、ajaxを使用してメインページの結果を置き換えました。 – OrangeBubbles