Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript $.post()有时需要2次提交才能发送数据_Javascript_Jquery_Forms - Fatal编程技术网

Javascript $.post()有时需要2次提交才能发送数据

Javascript $.post()有时需要2次提交才能发送数据,javascript,jquery,forms,Javascript,Jquery,Forms,我已经研究了几天,但还没找到解决办法。问题是: 我有一个表单,它提交了一条要处理/插入数据库的消息。表单使用$.post()提交消息 有时它工作得很好,但偶尔(看起来完全是随机的)——我必须按两次提交按钮才能查看数据。我第一次按下submit按钮时,它“似乎”已经提交,因为表单会像正常情况一样清除,等等——但数据不会发送。如果我再次单击submit按钮(在输入中不输入任何内容),它将发送我在单击前尝试提交的消息。我希望这是有道理的 换句话说,大多数情况下,我可以输入一条消息,单击提交1次,它工作

我已经研究了几天,但还没找到解决办法。问题是:

我有一个表单,它提交了一条要处理/插入数据库的消息。表单使用$.post()提交消息

有时它工作得很好,但偶尔(看起来完全是随机的)——我必须按两次提交按钮才能查看数据。我第一次按下submit按钮时,它“似乎”已经提交,因为表单会像正常情况一样清除,等等——但数据不会发送。如果我再次单击submit按钮(在输入中不输入任何内容),它将发送我在单击前尝试提交的消息。我希望这是有道理的

换句话说,大多数情况下,我可以输入一条消息,单击提交1次,它工作正常。但随机情况下,我将不得不多次单击“提交”,以获得实际提交的数据

有时,“故障”会连续发生不止一次。当这种情况发生时,我必须反复点击submit,直到发送完所有消息。他们好像不知怎么排队了

下面是我用来提交数据的函数:

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次单击(或“输入”)在他们通过之前,我真的抓狂了