ajax加载的表单总是发送输入的第一个值,即使重新加载也是如此
Ajax-loaded form always send first value entered even if reloaded
我不得不承认,我真的不知道如何解释这个"问题",我也没有找到一个好的标题为这篇文章。无论如何,我会尽量说清楚,因为我不确定是否可以添加JSFiddle或代码片段。
让我们从项目开始。我正在制作某种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中有多个表单。我在这方面取得了一些进展。首先,我现在可以使用一个适当的事件处理程序,并且我正在观察表单提交事件,因为preventDefault现在可以工作了。在success函数中,我增加了这一行:$('#FormAjoutFilm').remove();
它几乎按预期工作,因为数据只每隔一次提交一次。: p尽管如此,它比以前的行为要好,我现在需要修复它。感谢所有到目前为止做出贡献的人。如果你知道为什么我需要发送两次表格才能生效,请告诉我。这是我现在拥有的。:)
$("body").on( "submit", "#FormAjoutFilm", function(e) {
e.preventDefault();
var formDatas = $('#FormAjoutFilm').serialize();
alert(formDatas);
$.ajax({
url : 'Functions.php',
type : 'POST',
data : 'Action=AddFilm&' + formDatas,
cache: false,
dataType : 'html',
success : function(result, statut){
$('#FormAjoutFilm').remove();
$(result).modal();
},
});
});
第二次编辑:看起来它在缓存清理后终于解决了。感谢每个人的贡献。:)
尝试在数据发送后重置表单:
success : function(result, statut){
$('#FormAjoutFilm')[0].reset();
$(result).modal();
}
这将防止您的序列化函数获得第一个提交的数据
- 在新的浏览器选项卡上加载新的aspx页面后调用JavaScript函数
- 更改css链接并等待加载新的css
- 如何在Ajax加载新内容时停止JavaScript执行
- 当在ng视图中加载新路由时,Tabbing(tabindex)针对错误的元素
- 如何使用输入数据加载新的extjs图表
- JQuery Masonry.Ajax图标和“;加载新项目”;绳子放错地方了
- 通过javascript在同一个打开的选项卡中重新加载新的网页内容
- 当用户到达页面右侧时加载新内容
- 数据表 AJAX 筛选器重新加载数据
- 超链接单击以加载新页面并执行JavaScript
- 单击时加载新的 SVG
- 在RadWindow中加载新页面,然后从加载的窗体中关闭窗口
- ajax在页面刷新之前不会加载新的sql结果
- 谷歌地图API-在从ajax页面加载新数据之前清除标记、多段线
- 使用Ajax加载页面,并在必要时加载新脚本
- 加载新页面时的过渡效果,AJAX
- Ajax没有正确加载新页面
- 正在加载新的Javascript,但正在调用旧的Javascript.MVC
- 咕噜咕噜的手表:实时加载重新加载落后 1 步....
- 我怎么能有一个花哨的盒子一样的弹出体加载,但与cookie不连续加载重新加载