2017-10-25 5 views
0

別のテンプレートでボタンをクリックしたときに、ビューでテンプレートをレンダリングしようとしています。私は視点でメソッドにajax呼び出しを行いますが、何が間違っているのか分かりません。別のテンプレートをレンダリングできません。間違っていますか?Djangoビューでは、Ajaxを使用しているときにテンプレートをレンダリングしません。

my view.py 

@csrf_exempt 
def checkLogin (request): 
    if request.is_ajax(): 
     param = request.POST.get('param', None) 
     param1 = request.POST.get('param1', None) 
     if (param=="admin" and param1=="admin"): 
      Datenow = datetime.datetime.now().strftime('%H:%M:%S') 
      return render(request,'sample/test.html',{'Datenow': Datenow}) 
     else: 
      Datenow = datetime.datetime.now().strftime('%H:%M:%S') 
      return render(request,'sample/login.html',{'Datenow': Datenow}) 
    return HttpResponseBadRequest() 

これは私のテンプレートの私のAJAX呼び出しです:私はテンプレートのボタンをクリックしたときに

loginbt.onclick = function() { 
      var uName = $('#username').val(); 
      var pWord = $('#password').val(); 
      $.ajax({type: 'POST', 
      url: '/sample/checkLogin/',       // some data url 
      data: {param: uName, param1: pWord},  // some params 
      success: function (response) {     // callback 
       if (response.result === 'OK') { 
        if (response.data && typeof(response.data) === 'object') { 
         window.alert("its working"); 
        } 
       } else { 
        // handle an unsuccessful response 
       } 
      } 
      }); 

}

私は200 OK結果を得るが、テンプレートだけでは変更されません。どんな助言も役に立つでしょう。

+0

'window.alert'イベントは正常に起動しますか? – souldeux

+1

どこにでもテンプレートが表示されるようなコードはありませんか?テンプレートレスポンスでHTMLを更新するには、成功関数でそれを行う必要があります。 – solarissmoke

+2

あなたのページはなぜ変わると思いますか? HTML文書をajax関数に戻していて、その関数はアラートを表示する以外は何もしません。 ajaxでは、djangoビューはJSONドキュメントを返すので、ajax関数はこれを処理し、それに応じてHTML DOMツリーを変更できます。 – dirkgroten

答えて

0

ajax呼び出しのjsコールバックを修正する必要があります。

jjコールバックのdjango ではからいくつかのhtmlを返していますが、レスポンスをJSONデータとしてテストしています。

if (response.result === 'OK') { 
    if (response.data && typeof(response.data) === 'object') 

次のようなJSON構造をチェックされています

{ 
    result: "OK", 
    data: { 
    } 
} 

適切にあなたのコードを修正してください。

+0

私はこれに新しいですあなたは正確に何が問題になるかも教えてくれますか? ?? –

関連する問題