Ajax函数第一次工作,第二次不工作?
所以…我正要问这个问题 “我的ajax函数(编辑和删除)是如何工作的,我第一次使用它们,但是如果我第二次运行任何一个没有整页刷新(无论哪个function我使用第一个或哪个function我使用第二个),第二次它不起作用?“。
通过“不工作”我的意思是,对于编辑function,它第二次尝试像往常一样加载editUrlForm.php文件,然后只是停止并留下一个空div,或者在删除的情况下,它给出了错误来自我的“else”语句的消息,然后留下一个空div,在页面上重新加载没有被删除。
这个问题突然停止发生,因为没有理由!
问题:为什么? 怎么样? 我不明白……
AJAXfunction:
$(function() { $("#deleteUrl").click(function() { $('#response').html(''); if ($('input:checkbox[name="ticked[]"]:checked').length !== 0) { var tickedItems = $('input:checkbox[name="ticked[]"]:checked') .map(function() { return $(this).val() }) .get() //alert(tickedItems) .join(","); $.ajax({ type: "GET", url: "deleteUrl.php", data: "id=" + tickedItems, success: function(msg) { $('#response').html(); urlRefresh(); }, error: function () { alert('error'); } }); } else { alert('Please select at least one item to delete!') return false; } }); }); $(function() { $("#editUrl").click(function() { $('#response').html(''); if ($('input:checkbox[name="ticked[]"]:checked').length == 1) { var tickedItems = $('input:checkbox[name="ticked[]"]:checked') .map(function() { return $(this).val() }) .get() .join(","); $.ajax({ type: "GET", url: "editUrlForm.php", data: "id=" + tickedItems, success: function(msg) { $('#response').empty(); $('#content01').html(msg).show(); }, error: function () { alert('error'); } }); } else { alert('Only one item may be edited at a time. Please unselect all but one checkbox or insure you have one check box selected!') return false; } }); });
ps我明白这可能不是堆栈溢流的正常问题。 但我完全不知道发生了什么事情才能阻止这种错误发生…我还是不明白是什么原因造成了这个错误。 浏览器控制台很干净,没有错误,没有语法错误……如果有人对此问题有任何意见,可能会对此有所了解请告诉我。
编辑:
的index.html
<!-- Video Link Storage App $(function() { $("#deleteUrl").click(function() { $('#response').html(''); if ($('input:checkbox[name="ticked[]"]:checked').length !== 0) { var tickedItems = $('input:checkbox[name="ticked[]"]:checked') .map(function() { return $(this).val() }) .get() //alert(tickedItems) .join(","); $.ajax({ type: "GET", url: "deleteUrl.php", data: "id=" + tickedItems, success: function(msg) { $('#response').html(); urlRefresh(); }, error: function () { alert('error'); } }); } else { alert('Please select at least one item to delete!') return false; } }); }); $(function() { $("#editUrl").click(function() { $('#content02').html(''); if ($('input:checkbox[name="ticked[]"]:checked').length == 1) { var tickedItems = $('input:checkbox[name="ticked[]"]:checked') .map(function() { return $(this).val() }) .get() .join(","); $.ajax({ type: "GET", url: "editUrlForm.php", data: "id=" + tickedItems, success: function(msg) { $('#response').empty(); $('#content01').html(msg).show(); }, error: function () { alert('error'); } }); } else { alert('Only one item may be edited at a time. Please unselect all but one checkbox or insure you have one check box selected!') return false; } }); }); setTimeout(function() { $('#response').fadeOut('fast'); }, 10000); // <-- time in milliseconds MEDIA URL STORAGE APPLICATION
<!-- END PANEL --> © Corey Dawber, 2013 document.write('') <!-- --> $(document).foundation();
由于您可能正在删除然后在每次单击时重新附加按钮,因此您还会删除单击处理程序。 您可能想尝试使用委托:
$("#response").on('click','#deleteUrl', function() {...});
和
$("#content02").on('click','#editUrl', function() {...});
说明:这会将处理程序附加到不会被覆盖的元素( #response
和#content02
#response
),但只会侦听从按钮#deleteUrl
点击(分别是#deleteUrl
和#editUrl
)。
很难说我们是否没有你的页面结构。
如果#response(我猜它是一个div)包含#deleteUrl。 这是正常的。
您需要在身体上注册您的点击事件
$('body').on('click', 'selector', function (){...}
这样,即使用新内容替换div的内容,ajax也将始终有效。 检查: jquery click对ajax生成的内容不起作用