【问题标题】:trying to post an ajax to django view method and totally failing试图将 ajax 发布到 django 视图方法并且完全失败
【发布时间】:2013-08-12 23:49:34
【问题描述】:

我完全迷失了,我已经阅读了许多关于这个问题的答案和教程,包括 django 网站上的信息,但我不知道如何处理这个问题。

我的问题很简单。我想使用 ajax 发出一个简单的发布请求并取回一些信息。我什至无法进入 django 端的视图方法。

这里是代码

#urls.py
url(r'^spitback/$', 'spitback'),

#views.py
def spitback(request):
    logger.debug("\n\n\nspitback");
    logger.debug("request.method = {0}".format(request.method))
    return HttpResponse("helloooooo")

javascript:

function csrfSafeMethod(method) {
    return(/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}

$.ajaxSetup({
    crossDomain: false,
    beforeSend: function(xhr, settings) {
        var csrftoken = $.cookie('csrftoken');

        if (!csrfSafeMethod(settings.type)) {
            xhr.setRequestHeader("X-CSRFToken", csrftoken);
        }
    }
});


function testpost() { 
  $.ajax({ 
    type:"POST", 
    url:'/login', 
    data:{
        'key':'val', 
       'csrfmiddlewaretoken':"TB5gktJzHdowOtXR4u1BpjGABoKbJ2IQ"
    },        
    contentType:"application/json;charset=utf-8", 
    dataType:"json", 
    success: function(data) { alert('data = ' + data);}, 
    error: function(ts) { alert('ts = ' + ts)}
  }); 

  return false; 
}

    $( document ).ready( function() {
        console.log("document loaded for template login.django");
         $( "#somebutton" ).click( 
            testpost
        );
    });

此时我只是在尝试测试发布功能,但当我尝试它时,我清楚地从日志中看到“spitback”的视图方法甚至没有被调用。

有人请帮帮我,我已经无能为力了。

【问题讨论】:

  • 那个 URL 应该是 '/spitback' 而不是 login

标签: ajax django csrf


【解决方案1】:

应该是:

 $( "#somebutton" ).click( 
     testpost();
 );

你的ajax调用中的url也是错误的。

【讨论】:

    猜你喜欢
    • 2011-06-30
    • 2011-12-06
    • 2020-05-21
    • 2015-10-16
    • 2013-08-14
    • 2013-08-24
    • 2012-06-25
    • 1970-01-01
    • 2012-04-21
    相关资源
    最近更新 更多