【问题标题】:Submitting Forms from Ajax Response从 Ajax 响应提交表单
【发布时间】:2013-01-30 07:36:16
【问题描述】:

我有一个项目列表,每当添加新项目时,它都会通过 ajax 调用动态更新。这些列表项中的每一个都包含一个评论表单,该表单具有一个评论字段和一个隐藏字段,该字段指示已评论的项目。

我正在使用 jquery 表单插件来使用 ajax 提交这些表单。我一直遇到的问题是插件无法识别表单,因此它们可以正常运行(发布并重定向到 ajax/comment.php)。在做了一些挖掘之后,我认为这是因为表单是动态加载的,脚本无法“看到”它们。我已经阅读了关于 eval() 是让脚本正确运行的可能解决方案。现在,如果我不使用 ajax 填充页面,代码将正确执行。

 <script>
$(document).ready(function() { 
var options = {  
    url: 'ajax/comment.php',
}; 
$('.commentsubmit').submit(function() { 
    $(this).ajaxSubmit(options); 

    return false; 
}); 
}); 

</script>    

【问题讨论】:

    标签: javascript jquery ajax


    【解决方案1】:

    如果表单是动态加载的,请将.submit 更改为:

    $(document).on('submit', '.commentsubmit', function () {
    

    这会将submit 事件委托给在您调用.on 时可能未添加到DOM 的任何.commentsubmit 表单。

    在不相关的注释上,使用e.preventDefault(),而不是return falsehttp://fuelyourcoding.com/jquery-events-stop-misusing-return-false/

    【讨论】:

    • 它仍在重定向到 ajax/comment.php
    • 你写的很有效。它正在运行 ajax 表单并重定向它以前没有做的事情。所以函数终于运行起来了,但是还在重定向
    • 我改回来返回false;它工作正常。谢谢
    • @centree 抱歉,我应该指定您需要将 e 传递给回调,如 (function (e) {)