2014-11-08 146 views
0

我正在尝试发送ajax POST请求以将证明简单表单发送到Django视图。问题是这个请求返回一个GET而不是POST。Ajax请求类型POST返回GET

这是我的ajax:

<script> 

$(document).ready(function(){ 
    $("form.testimonial-form").submit(function(e){ 
    e.preventDefault(); 

    var dataString = $(this).serialize(); 

    $.ajax({ 
     type: "POST", 
     url: "/testimonials", 
     data: dataString, 
     success: function(_data) {   
     if (_data[0]){ 
      $('.modal-text').css({display: "none"}); 
     } 
     else{ 
      $('.unsuccess').css({display: "block"}); 
     } 
     } 
    }); 
    }); 
}); 
</script> 

任何想法可能是什么我是做错了什么?

回答

0

取代type通过method

method: 'post', 

也可能需要发送headers

headers: { 
    'X-CSRFToken': getCSRFToken() 
}, 

其中getCSRFToken是:

function getCSRFToken() { 
    return $('input[name="csrfmiddlewaretoken"]').val(); 
} 
+0

没有,它仍然返回GET ... – 2014-11-08 15:27:51

+0

发送张贴到您的看法,我没有看到哪个请求类型返回你的看法,所以我该如何帮助你?展示你的观点,或者更好的阅读文档https://docs.djangoproject.com/en/dev/topics/class-based-views/generic-editing/#ajax-example这里是你如何发送json响应 – madzohan 2014-11-08 16:01:49

+0

或如果它发送GET到您的视图有很多类似的问题在这里http://stackoverflow.com/questions/1960240/jquery-ajax-submit-form,如果它发送GET - 这是严格jQuery的问题,所以没有必要添加Django标签 – madzohan 2014-11-08 16:03:46

0

我真的不知道为什么发生这种情况,但我会写f联合以一种不同的方式。因为ajax();的默认type"GET",我怀疑某处它被设置为默认。

首先设置提交按钮(其ID为例如"submit_button_id")的type="button",所以如果您点击它,它不会提交。或把按钮<form>

之外,那么试试这个代码

<script> 
$(function(){ // same as "$(document).ready(function()".. 
    $("#submit_button_id").on('click',function(){ 

    var dataString = $('form.testimonial-form').serialize(); 

    $.ajax({ 
    type: "POST", 
    url: "/testimonials", 
    data: dataString, 
    success: function(_data) {   
     if (_data[0]){ 
     $('.modal-text').css({display: "none"}); 
     } 
     else{ 
     $('.unsuccess').css({display: "block"}); 
     } 
    } 
    }); 
    }); 
}); 
</script> 
+0

它没有工作...一旦我“打印request.is_ajax()”在我的推荐查看我得到“真”,我也做“打印request.method”我得到“GET”。 – 2014-11-09 23:03:16