繁体   English   中英

Django中的Ajax POST和GET

[英]Ajax POST and GET in django

我正在学习如何在Django中使用Ajax GET和POST,我有这个问题,请抽出宝贵的时间来帮助我。谢谢!

我的问题是,当我单击POST按钮时,它总是转到views.ajax_get(当我期望它应该转到views.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>

这是Javascript:

<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>

您尚未禁用表单或按钮的默认操作。 因此,触发了Ajax,但随后通常通过浏览器提交了表单。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM