ajax请求在django中不起作用?

时间:2014-04-25 21:41:39

标签: jquery ajax django

这是我使用Jquery blockUI插件的js:

$(document).ajaxStop($.unblockUI);

 $('#submit-id-submit').click(function() {
  $.blockUI({message:'<h1><img src="{% static 'css/spinner.gif' %}" /> Just a moment ...</h1>'});
  $.ajax({
    url: "/search/test/",
    cache:'false',
    dataType: 'text',
    type:"GET",
    success: function(data){
      alert(data);
    },
    error: function(data){
      alert('error; '+ eval(error));
    }
  });
});

我的观点:

def test_ajax(request):
    time.sleep(20)
    print "in test_ajax"
    return HttpResponse("hell world")

url(r"search/test/$", test_ajax,name="dummy"),

首先,我看到ajax调用返回错误(因为我从错误中得到警告。但它没有显示错误消息)

其次,我的视图test_ajax没有被调用,因为我希望那里的print语句被执行,但是它不会被执行。

我无法弄清楚这里出了什么问题。

2 个答案:

答案 0 :(得分:5)

过去我遇到过类似的问题。原因是您允许默认表单提交。试试这个,看看你得到了什么;

$('#submit-id-submit').click(function(e) {
   e.preventDefault();
  $.blockUI({message:'<h1><img src="{% static 'css/spinner.gif' %}" /> Just a moment ...</h1>'});
  $.ajax({
    url: "/search/test/",
    cache:'false',
    dataType: 'text',
    type:"GET",
    success: function(data){
      alert(data);
    },
    error: function(data){
      alert('error; '+ eval(error));
    }
  });
});

或只是return false

$('#submit-id-submit').click(function() {

  $.blockUI({message:'<h1><img src="{% static 'css/spinner.gif' %}" /> Just a moment ...</h1>'});
  $.ajax({
    url: "/search/test/",
    cache:'false',
    dataType: 'text',
    type:"GET",
    success: function(data){
      alert(data);
    },
    error: function(data){
      alert('error; '+ eval(error));
    }
  });
   return false;
});

通过执行以下任一操作,您可以阻止默认操作(在我的情况下表单提交我猜) 您可以阅读有关此here;

的更多信息

答案 1 :(得分:1)

您的错误功能正在尝试提醒不存在的error变量。尝试提醒data变量。

另外,为了帮助您排除故障,您可以检查视图功能是否适用于非AJAX GET请求。

最后,这不适用于您使用GET请求的情况,但如果您需要执行AJAX帖子请求,则需要在标题https://docs.djangoproject.com/en/1.6/ref/contrib/csrf/#ajax中发送CSRF令牌。