2016-06-23 12 views
0

DjangoでAjax GETとPOSTを使用する方法を学習しています。この問題があります。時間を割いてください。ありがとうございます!DjangoでAjax POSTとGET

私が問題になるのは、POSTボタンをクリックすると、常にviews.ajax_getに移動するということです(view.ajax_postに行くはずです)。ここで

ここではHTMLテンプレート

<button class="get_button" id="get-button" type="button">Get button</button> 

<form method="POST"> 
    {%csrf_token%} 
    <button class="post_button" id="post-button" type="submit">Post button</button> 
</form> 

はジャバスクリプトです:

<script> 
    $(document).ready(function() { 
    $('.get_button').click(function() { 

    $.ajax({ 
    type: "GET", 
    url: "{%url 'myapp:ajax_get' %}", 
    success: function(response) { 
     alert('Ajax GET') 
    } 
    }); 
}); 

$('.post_button').click(function() { 

    $.ajax({ 
    type: "POST", 
    url: "{%url 'myapp:ajax_post' %}", 
    success: function(response) { 
     alert('Ajax POST'); 
    } 
    }); 
}); 

// CSRF code 
function getCookie(name) { 
    var cookieValue = null; 
    var i = 0; 
    if (document.cookie && document.cookie !== '') { 
    var cookies = document.cookie.split(';'); 
    for (i; i < cookies.length; i++) { 
     var cookie = jQuery.trim(cookies[i]); 
     // Does this cookie string begin with the name we want? 
     if (cookie.substring(0, name.length + 1) === (name + '=')) { 
     cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); 
     break; 
     } 
    } 
    } 
    return cookieValue; 
} 
var csrftoken = getCookie('csrftoken'); 

function csrfSafeMethod(method) { 
    // these HTTP methods do not require CSRF protection 
    return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method)); 
} 
    $.ajaxSetup({ 
     crossDomain: false, // obviates need for sameOrigin test 
     beforeSend: function(xhr, settings) { 
     if (!csrfSafeMethod(settings.type)) { 
      xhr.setRequestHeader("X-CSRFToken", csrftoken); 
     } 
     } 
    }); 

    }); 
</script> 
+0

あなたは関連する 'views.py'と' urls.py'を投稿できますか?恐らく問題は約2つのことだと思う。 (1) 'event.preventDefault'をJSで実行して、送信ボタンをクリックしたときにフォームのフォーム(2)またはフォームの' action'パスを実際に送信しないようにします。 – Leonard2

答えて

1

あなたは、フォームやボタンのデフォルトの動作を無効にしていません。そのため、Ajaxが起動されますが、フォームはブラウザを介して正常に送信されます。

関連する問題