Javascript Ajax加载的表单始终发送输入的第一个值,即使重新加载也是如此

Javascript Ajax加载的表单始终发送输入的第一个值,即使重新加载也是如此,javascript,jquery,Javascript,Jquery,我必须承认,我真的不知道如何解释这个“问题”,我也没有找到一个好的标题,这条线索。无论如何,我会尽量澄清,因为我不确定是否可以添加JSFIDLE或代码片段 让我们从这个项目开始。我正在制作某种DVD库,只在本地网络上使用。有一个页面允许用户向数据库添加新电影。为此,我使用Allocine API(相当于IMDB的法语)来收集电影信息。用户可以输入电影标题(或部分标题)并执行搜索。Allocine的所有相应胶片将出现。 如果用户单击其中一个表单,将打开一个模式窗口,允许用户在发送表单之前添加所需信

我必须承认,我真的不知道如何解释这个“问题”,我也没有找到一个好的标题,这条线索。无论如何,我会尽量澄清,因为我不确定是否可以添加JSFIDLE或代码片段

让我们从这个项目开始。我正在制作某种DVD库,只在本地网络上使用。有一个页面允许用户向数据库添加新电影。为此,我使用Allocine API(相当于IMDB的法语)来收集电影信息。用户可以输入电影标题(或部分标题)并执行搜索。Allocine的所有相应胶片将出现。 如果用户单击其中一个表单,将打开一个模式窗口,允许用户在发送表单之前添加所需信息。然后使用AJAX发送表单,结果显示在相同的模式窗口中。 当我想添加第二部电影时,问题就出现了。如果我在下次提交表单之前不重新加载页面,第一部电影的值将被发送,而不是第二部电影的值,这让我发疯

下面是用于发送表单的javascript代码

$("body").on( "click", "#AddFilmButton", function() {       
    var formDatas = $('#FormAjoutFilm').serialize();

    $.ajax({
       url : 'Functions.php',
       type : 'POST',
       data : 'Action=AddFilm&' + formDatas, 
       cache: false,
       dataType : 'html',
       success : function(result, statut){
            $(result).modal();              
       },
    });     
});
您可能会注意到,我正在观看一个按钮单击事件,而不是表单提交事件。这是因为当我使用表单提交事件时,页面一直在刷新,无论我是否使用preventDefault。 我开始怀疑发送值是否因为我使用了这个解决方法而没有被重置。就这样吗

还有什么代码可以帮助您理解我的问题

编辑:就像@intale建议的那样,由于这个模态系统,我在DOM中有多个表单。我在这方面取得了一些进展。首先,我现在可以使用一个合适的事件处理程序,并且我正在观察表单提交事件,因为默认值现在起作用了。 在success函数中,我添加了这一行:
$('#FormAjoutFilm').remove()
它的工作原理几乎与预期一致,因为数据只每隔一次提交一次P
不过,它比以前的行为要好,我现在需要修复它。
感谢迄今为止做出贡献的所有人。如果你知道为什么我需要发送两次表格才能让它工作,请告诉我。这就是我现在拥有的。:)


第二次编辑:在缓存清除之后,它看起来终于解决了。感谢所有贡献的人。:)

发送数据后,尝试重置表单:

success : function(result, statut){
    $('#FormAjoutFilm')[0].reset();
    $(result).modal();              
   }

这将阻止序列化函数获取第一次提交数据

99%的概率,即您在DOM中有重复的ID。我假设您在将第二个表单附加到DOM时没有删除第一个表单(通过执行
$(result.modal();
)。因此,当您执行
$('#FormAjoutFilm').serialize()
时,将从第一个表单中选取值。是否在模式中定义了
#FormAjoutFilm
表单?是否尝试添加
$('#FormAjoutFilm').reset()成功
功能中的code>。@SarathChandra:谢谢你的建议。我以前已经试过了,它一直告诉我
类型错误:$(…)。重置不是一个函数
@肯尼:你什么意思@也许你是对的。提交表单时,它被“删除”,因为模式窗口被另一个窗口替换,但我不确定这是否意味着它已从DOM中删除。我试图查看它,但没有看到Firebug。在@SarathChandra建议之后,我已经尝试过了,它一直告诉我
TypeError:$(…)。reset不是一个函数
尝试将其更改为
$('#FormAjoutFilm')[0]。reset().TypeError:$(…).reset不是一个函数,仅当您有一个名为“reset”的元素id时才会发生。我想不出还有其他问题。这个版本不再抛出错误,它会删除一些数据。事实上,我从表格中得到了两个值。隐藏输入和文本输入。在您的代码中,文本值被重置,但就像@intale建议的那样,我可能有多个表单实例。我开始怀疑,就我的JS技能而言,这样做是否是个好主意。我应该试试简单点的。
success : function(result, statut){
    $('#FormAjoutFilm')[0].reset();
    $(result).modal();              
   }