这是我使用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语句被执行,但是它不会被执行。
我无法弄清楚这里出了什么问题。
答案 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令牌。