我在django模板中有一个表单,在提交时调用javascript函数:
<input name="button2" type="submit" class="test" id="button2" value="submit"
onclick="checkSubmitStatus();"/>
表单提交后,python视图中的一些代码,将此表单中的数据写入数据库。像:
if request.method == 'POST':
customer_data = Customers(CustomerID=1, CustomerName=request.POST['textfield1'])
customer_data.save()
return HttpResponse(status=204)
在javascript函数中,我使用ajax从服务器获取一些数据:
<script type="text/javascript">
function checkSubmitStatus() {
$.ajax({
url: "CustomerData",
type: 'get',
datatype: 'html',
async: false,
success: function(data) {
x = data;
}
});
Alert(x);
}
当CustomerData从DB读取数据时:
return HttpResponse(Customers.objects.get(CustomerID=1).CustomerName)
我希望CustomerData提供修改后的数据(我在模板表单中输入的数据),同时返回以前的数据。当我刷新页面时,我可以看到更新的数据。所以我确定将表单数据写入DB,但脚本显示了破旧的数据。
答案 0 :(得分:0)
这段代码没有多大意义。你的JS函数在提交时被调用;也就是说,在单击提交按钮的位置。但到那时,数据还不存在,因为你还没有提交表格;并且无论如何,任何Ajax调用都将立即被提交操作替换,因此永远不会调用回调。
我不明白为什么你有这种混合形式的POST / Ajax GET。通过Ajax提交表单并返回该调用中的更新数据;或者,正常提交表单,并在提交的标准HTML响应中返回更新的数据。