Javascript $.post()有时需要2次提交才能发送数据
我已经研究了几天,但还没找到解决办法。问题是: 我有一个表单,它提交了一条要处理/插入数据库的消息。表单使用$.post()提交消息 有时它工作得很好,但偶尔(看起来完全是随机的)——我必须按两次提交按钮才能查看数据。我第一次按下submit按钮时,它“似乎”已经提交,因为表单会像正常情况一样清除,等等——但数据不会发送。如果我再次单击submit按钮(在输入中不输入任何内容),它将发送我在单击前尝试提交的消息。我希望这是有道理的 换句话说,大多数情况下,我可以输入一条消息,单击提交1次,它工作正常。但随机情况下,我将不得不多次单击“提交”,以获得实际提交的数据 有时,“故障”会连续发生不止一次。当这种情况发生时,我必须反复点击submit,直到发送完所有消息。他们好像不知怎么排队了 下面是我用来提交数据的函数:Javascript $.post()有时需要2次提交才能发送数据,javascript,jquery,forms,Javascript,Jquery,Forms,我已经研究了几天,但还没找到解决办法。问题是: 我有一个表单,它提交了一条要处理/插入数据库的消息。表单使用$.post()提交消息 有时它工作得很好,但偶尔(看起来完全是随机的)——我必须按两次提交按钮才能查看数据。我第一次按下submit按钮时,它“似乎”已经提交,因为表单会像正常情况一样清除,等等——但数据不会发送。如果我再次单击submit按钮(在输入中不输入任何内容),它将发送我在单击前尝试提交的消息。我希望这是有道理的 换句话说,大多数情况下,我可以输入一条消息,单击提交1次,它工作
function postMsg() {
$.post("index.php", {
message: $("[name='message']").val()
});
document.m.message.focus();
return false;
}
以及我使用的表单标签:
<form class="form-inline" id="m" name="m" method="post" onSubmit="postMsg();clear_form();return false">
function clear_form() {
document.getElementById('message').value = '';
}
如果有人能帮我指出正确的方向,我将不胜感激
更新后包含了Crone提供的功能——它可以工作,但仍然存在需要在数据通过之前提交多次的问题:
jQuery("#m").submit(function(e) {
e.preventDefault();
jQuery.post("index.php", {
message: jQuery("[name='message']").val()
});
document.m.message.focus();
clear_form();
});
更新-添加了用于在显示器中加载消息的功能。这称为onLoad,当提交新消息时,它将捕获并显示新数据
function loadMainDisplay(){
$( "#innercontrols" ).load( "includes/controls.php" );
scrollToBottom();
}
“controls.php”只是一个文件,它从mysql数据库获取消息并以适当的格式将其返回
在我的index.php(函数/表单所在的位置)的顶部,我有一个检查,看看是否有任何输入已使用输入类提交,如下所示:
if(Input::exists()){
$message = Input::get('message');
... validate and insert into db if ok
}
如果你想要一个实际页面的链接来直接查看问题,请告诉我,我会用该链接发送一条私人消息
jQuery('form [type="submit"]').on('click', function(e) {
e.preventDefault();
jQuery.post("index.php", {
message: jQuery("[name='message']").val()
});
document.m.message.focus();
clear_form();
});
支持“回车”按钮的版本:
jQuery("form").on('submit', function(e) {
e.preventDefault();
jQuery.post("index.php", {
message: jQuery("[name='message']").val()
});
document.m.message.focus();
clear_form();
});
你真的应该使用更多的jQueryTanks!我来试一试。我看到这是一个点击功能,如果他们使用enter按钮提交表单,这也会起作用吗?或者我必须为此添加/修改吗?@MikeRoberts-不,不会,这就是为什么你通常应该总是听
submit
事件,如$('#m')。在('submit',function(){…
添加了“enter”的版本按钮支持。我将在这里试一试,并很快报告,谢谢!好的,我添加了带有enter按钮支持的版本,它可以工作,但它与我以前使用的代码有相同的问题,尽管它似乎更经常发生。至少有一半的提交需要2次单击(或“输入”)在他们通过之前,我真的抓狂了