我有一个简单的Web应用程序,其中包含两个按钮,每个按钮都通过jQuery发出请求。我在我的views.py
中监听POST请求,并根据按下的按钮执行某些逻辑。例如:
if request.method == 'POST':
foo = request.POST['SELECTED'] #the value of the button pressed
if foo == 'I got gas!':
try:
return render(request, 'gogetgas/toosoon.html')
except Exception as e:
print e
...
这只是逻辑片段,但它是相关部分。当我调试它时,它会转到return render()
并执行所有逻辑。但是,它不会加载我的toosoon.html
模板。控制台中没有抛出任何错误,也没有打印异常。 Chrome的控制台和Django控制台分别打印出使用jQuery日志和Python打印成功的POST请求。
为什么不显示我的页面?
修改
我的jQuery代码按要求(我很欣赏它有点迂回,但我的好友写了它,我不想修剪它,直到我有一切工作):
<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.0.min.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
//
$('form').submit(function(e){
return false;
});
$("form input[type='button']").one('click', function(e){
var selected = $(this).val();
console.log(selected);
submitForm(selected);
});
function submitForm(sel){
var selected =sel;
console.log(selected);
$.post("/", {selected: sel},function(){
}).done(function(){
console.log('success');
}).fail(function(err){
console.log(err.responseText);
});
}
});
</script>
我把它称为各种模板我错了。这是<project root>/templates/gogetgas/toosoon.html
中的简单HTML文件。
ANSWER
为了进一步澄清Daniel Roseman在下面的回答,我不得不用jQuery来加载响应。我感到困惑,并认为Django render
会以某种方式加载页面而不需要jQuery。我创建了一个变量来发布ajax请求然后在.done
回调上我清空了主体并用数据填充它:
var xhr = $.post("/", {selected:selected});
xhr.done(function(data){
console.log('done');
$('body').empty().html(data);
});
答案 0 :(得分:1)
您的jQuery脚本中没有任何代码可以显示POST的结果。 AJAX查询将以异步方式获取数据,但您需要实际执行浏览器返回的任何操作。