Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用相同数据调用两次JQuery Ajax函数_Jquery_Ajax_Django - Fatal编程技术网

使用相同数据调用两次JQuery Ajax函数

使用相同数据调用两次JQuery Ajax函数,jquery,ajax,django,Jquery,Ajax,Django,我正在构建一个非常简单的页面,它是一个待办事项列表。它通过表单接受用户输入的待办事项,将待办事项发布到服务器,然后接收(几乎)相同的数据并将其添加到列表中。但是,每次将数据发送到服务器时,都会调用$.ajax函数两次 我的js: // todo.js function onload() { $( "#datepicker" ).datepicker(); $( "#todoform" ).submit(function(e){ e.preventDefault(); sendtodo

我正在构建一个非常简单的页面,它是一个待办事项列表。它通过表单接受用户输入的待办事项,将待办事项发布到服务器,然后接收(几乎)相同的数据并将其添加到列表中。但是,每次将数据发送到服务器时,都会调用$.ajax函数两次

我的js:

// todo.js
function onload() {
 $( "#datepicker" ).datepicker();
 $( "#todoform" ).submit(function(e){
  e.preventDefault();
  sendtodo();
  return false;
 });
}
function sendtodo() {
 $.ajax({
  url: '/blog/todo/newtodo/',
  type: "POST",
  success: function(data) {
   receivetodo(data);
  },
  data: ({
   body: $('#newbodytextarea').val(),
   title: $('#titleinput').val(),
   dateDue: $('#datepicker').val(),
   time: $('#timepicker').val(),
   category: $('#newcategory').val()}),
});
}
function receivetodo(data) {
 $('#todobody').append(data);
}
和我的HTML的一部分:

<html>
<head>
<title>Todo list</title>
<link href="/django_media/css/todo/todo.style.css" rel="stylesheet" type="text/css">
<link href="/django_media/css/jquery-ui-1.8.5.custom.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="/django_media/js/jquery.js"></script>
<script type="text/javascript" src="/django_media/js/jquery-ui-custom.js"></script>
<script type="text/javascript" src="/django_media/js/todo/todo.js"></script>
<script type="text/javascript">
 $(document).ready(function(){
  onload();
 });
</script>
</head>
<body>
[.................]
</body>
</html>

任务清单
$(文档).ready(函数(){
onload();
});
[.................]
如果有关系,我将使用Django作为后端。返回的数据是一个
,其中包含两个其他
标记以及一些
标记。将接收到的HTML附加到页面的代码部分工作正常,只是附加了两次(数据实际上在数据库中存在两次)

我尝试过使用
$(“#todoform”)。单击(函数(e){
而不是
$(“#todoform”)。提交(函数(e){
但这没有改变任何东西。我还确保
onload()
只被调用一次。为什么
sendoform()执行两次

如果您需要任何其他代码,我也可以发布。

可能会调用两次
onload()
,请通过您的代码检查所有出现的代码。如果您调用两次
.submit()
,onsubmit事件将附加给定的代码,而不是替换

要进行调试,请在
sendtodo()
中放置一个
警报('anything')
,并检查提交时是否真的调用了两次

您还可以执行以下操作:

$('#todoform').removeAttr('onsubmit').submit( ...
但最好找出它被绑定两次的原因,替换为:

$( "#todoform" ).submit(function(e)
为此:

$( "#todoform" ).unbind('submit').submit(function(e)

您是否在firebug控制台中检查了$(“#todoform”).data('events').submit以查看它是否绑定了两次?它看起来确实绑定了两次。在绑定处理程序之前,是否可以使用特定的函数清除所有事件处理程序?您可以使用
.unbind('submit'))
用于this@Yi成功了。如果您或@lain创建了一个答案,我将接受。谢谢。
sendtodo()
在我提交表单时被调用了两次。Firebug显示相同的侦听器绑定到我的表单两次。