Javascript AJAX post未能在Django视图中进行XMLHttpRequest检查

Javascript AJAX post未能在Django视图中进行XMLHttpRequest检查,javascript,python,ajax,django,Javascript,Python,Ajax,Django,我有一个简单的html页面,它呈现了许多几乎相同的表单供用户提交。提交后,视图将向数据库中添加一行,重新创建具有略微更新的数据的表单列表,并将其发送回浏览器(“/route/complete/”maps以在URL.py中添加“已完成的”route“视图) 这是第一次完美地工作。但是,一旦页面用新的表单列表重新绘制,下一次提交将使请求失败。这会导致它跳到request.request['next'],然后跳到home\u视图 我在下面对其进行了注释,但我也尝试在视图中添加c['HTTP_X_REQ

我有一个简单的html页面,它呈现了许多几乎相同的表单供用户提交。提交后,视图将向数据库中添加一行,重新创建具有略微更新的数据的表单列表,并将其发送回浏览器(“/route/complete/”maps以在URL.py中添加“已完成的”route“视图)

这是第一次完美地工作。但是,一旦页面用新的表单列表重新绘制,下一次提交将使请求失败。这会导致它跳到request.request['next'],然后跳到home\u视图

我在下面对其进行了注释,但我也尝试在视图中添加c['HTTP_X_REQUESTED_和']='XMLHttpRequest',但没有任何帮助

我正在寻求帮助,以确保在用户通过AJAX提交时,头继续具有适当的XMLHttpRequest参数。下面是代码,非常感谢您的帮助

script.js

<script>
$(document).ready(function() {
  $(".doneForm").submit(function() {
    var route_id = $(this).find('input[name=route_id]').val()
    var next = $(this).find('input[name=next]').val()
    var reqData = {route_id:route_id,next:next}


    $.ajax({
      type: "post",
      url: "/route/complete/",
      data: reqData,
      success: function(data) {
        $("#routeTable").html(data);
      }
    });
  return false;
  });
});
</script> 

问题在于,一旦Ajax完成,它就会用一个新表单替换原始表单,而这个表单不再附加javascript事件处理程序,因此下次表单通过普通POST方法提交时

幸运的是,jQuery有两种方法可以为您处理这个问题—
live
delegate
。因此,请执行以下操作,而不是
$(“.doneForm”).submit(function()…

$(".doneForm").live("submit", function() {...

问题在于,一旦Ajax完成,它就会用一个新表单替换原始表单,而这个表单不再附加javascript事件处理程序,因此下次表单通过普通POST方法提交时

幸运的是,jQuery有两种方法可以为您处理此问题—
live
delegate
。因此,不要使用
$(“.doneForm”)。提交(function()…
,而是执行以下操作:

$(".doneForm").live("submit", function() {...

丹尼尔,你是拯救生命的javascript智慧的闪耀字体。问题解决了,我刚刚学到了一些关于JS如何工作的新知识-谢谢!丹尼尔,你是拯救生命的javascript智慧的闪耀字体。问题解决了,我刚刚学到了关于JS如何工作的新知识-谢谢!
$(".doneForm").live("submit", function() {...