Javascript 为什么此表单不过帐数据?

Javascript 为什么此表单不过帐数据?,javascript,php,jquery,html,forms,Javascript,Php,Jquery,Html,Forms,我有以下表格在数据库中发布消息。然而,每当我按下输入按钮,它就会冻结,什么也没发生。似乎找不到确切的问题。尝试将PHP更改为if(isset($\u POST['submit']),提交按钮工作正常,因此我认为这可能是“textarea”设置的问题。有人知道我哪里出了问题吗 HTML: 尝试替换下面的行 <form action="javascript:sendPM();" name="pmForm" id="pmForm" method="post"> 到 如果它不起作用,请告

我有以下表格在数据库中发布消息。然而,每当我按下输入按钮,它就会冻结,什么也没发生。似乎找不到确切的问题。尝试将PHP更改为
if(isset($\u POST['submit'])
,提交按钮工作正常,因此我认为这可能是“textarea”设置的问题。有人知道我哪里出了问题吗

HTML:



尝试替换下面的行

<form action="javascript:sendPM();" name="pmForm" id="pmForm" method="post">


如果它不起作用,请告诉我。谢谢

将您的js代码更改为该代码:

$('#pmForm').submit(function(e){
    // prevent default event handler
    e.preventDefault();
    // disable input
    $('input[type=submit]', this).attr('disabled','disabled');
    // call your function
    sendPM()
 });
然后可以将表单的action属性设置为空。只是:

<form action="" name="pmForm" id="pmForm">

如果您在js中自己创造了所有的魔力,那么实际上并不需要这些属性


但是,如果您想支持没有javascript的浏览器,那么应该根据API URL添加“action”和“method”属性。因此,如果用户的浏览器支持JS,那么所有这些属性都将被忽略,但对于其他人来说,您的表单将以本地方式工作。

尝试下面的代码片段。在我的机器里工作得很好。希望它能起作用

$(document).on('submit','#pmForm',function() {
        $('input[type=submit]', this).attr('disabled','disabled');

        var pmTextArea = $("#pmTextArea");
        var sendName = $("#pm_send_name");
        var sendID = $("#pm_send_id");
        var receiveName = $("#pm_receive_name");
        var receiveID = $("#pm_receive_id");
        var timesent = $("#pm_timesent");
        var url = "messages.php";
        if (pmTextArea.val() == "") {
          $("#interaction").html('Comment field is empty.').show().fadeOut(5000);
        }
        else {
          var data = { message: pmTextArea.val(), sendername: sendName.val(), senderid: sendID.val(), recname: receiveName.val(), recID: receiveID.val(), time: timesent.val()  };
          $.post(url,data,    function(data){
          $("#interaction").html('Message sent successfully.').show().fadeOut(5000);
          document.pmForm.pmTextArea.value='';
          });
        }
    });

首先,您不需要从表单标记调用js:

<form action="javascript:sendPM();" name="pmForm" id="pmForm" method="post">

您不需要定义的函数。还要注意e.preventDefault,它阻止表单执行默认提交操作

删除
action=“javascript:sendPM();”
并在
$('#pmForm')中执行所需操作。改为提交(函数(e){/…您的代码})
回调。只是别忘了添加
e.preventDefault()在回调中停止正常形式的行为。我想指出几点。(i) 
表单
标记
操作
属性应该是您要向其提交数据的URL。默认情况下,如果缺少此属性,则默认为当前URL。如果希望在提交时调用JavaScript函数,可以将其作为提交事件的回调调用
action=“javascript:sendPM();”
不是它的合适位置。(ii)检查
if(isset($\u POST['submit'])
实际上是验证服务器端页面提交(PHP)是否有帮助的更好方法?将if(isset($\u POST['message']){替换为if($\u server['REQUEST\u METHOD']==“POST”){请在firefox浏览器中打开页面,按ctrl\u shift+q并转到网络选项卡。在该选项卡下方,您可以找到xhr选项卡。点击提交按钮,如果任何xhr请求被触发,请告诉我。您尝试过吗?您也可以在chrome浏览器中进行同样的操作。这个怎么样?
$('#pmForm').submit(function(){$('input[type=submit]', this).attr('disabled','disabled');});
  function sendPM(){
    var pmTextArea = $("#pmTextArea");
    var sendName = $("#pm_send_name");
    var sendID = $("#pm_send_id");
    var receiveName = $("#pm_receive_name");
    var receiveID = $("#pm_receive_id");
    var timesent = $("#pm_timesent");
    var url = "messages.php";
    if (pmTextArea.val() == ""){
      $("#interaction").html('Comment field is empty.').show().fadeOut(5000);
    }
    else {
    $.post(url,{ message: pmTextArea.val(), sendername: sendName.val(), senderid: sendID.val(), recname: receiveName.val(), recID: receiveID.val(), time: timesent.val()  },    function(data){
      $("#interaction").html('Message sent successfully.').show().fadeOut(5000);
      document.pmForm.pmTextArea.value='';
      });
    }
  }
    $(document).on('submit','#pmForm',function() {
    $('input[type=submit]', this).attr('disabled','disabled');

    var pmTextArea = $("#pmTextArea");
    var sendName = $("#pm_send_name");
    var sendID = $("#pm_send_id");
    var receiveName = $("#pm_receive_name");
    var receiveID = $("#pm_receive_id");
    var timesent = $("#pm_timesent");
    var url = "messages.php";
    if (pmTextArea.val() == "") {
      $("#interaction").html('Comment field is empty.').show().fadeOut(5000);
    }
    else {
      var data = { message: pmTextArea.val(), sendername: sendName.val(), senderid: sendID.val(), recname: receiveName.val(), recID: receiveID.val(), time: timesent.val()  };
      $.post(url,data,    function(data){
      $("#interaction").html('Message sent successfully.').show().fadeOut(5000);
      document.pmForm.pmTextArea.value='';
      });
    }
});
$('#pmForm').submit(function(e){
    // prevent default event handler
    e.preventDefault();
    // disable input
    $('input[type=submit]', this).attr('disabled','disabled');
    // call your function
    sendPM()
 });
<form action="" name="pmForm" id="pmForm">
$(document).on('submit','#pmForm',function() {
        $('input[type=submit]', this).attr('disabled','disabled');

        var pmTextArea = $("#pmTextArea");
        var sendName = $("#pm_send_name");
        var sendID = $("#pm_send_id");
        var receiveName = $("#pm_receive_name");
        var receiveID = $("#pm_receive_id");
        var timesent = $("#pm_timesent");
        var url = "messages.php";
        if (pmTextArea.val() == "") {
          $("#interaction").html('Comment field is empty.').show().fadeOut(5000);
        }
        else {
          var data = { message: pmTextArea.val(), sendername: sendName.val(), senderid: sendID.val(), recname: receiveName.val(), recID: receiveID.val(), time: timesent.val()  };
          $.post(url,data,    function(data){
          $("#interaction").html('Message sent successfully.').show().fadeOut(5000);
          document.pmForm.pmTextArea.value='';
          });
        }
    });
<form action="javascript:sendPM();" name="pmForm" id="pmForm" method="post">
<form name="pmForm" id="pmForm" method="post">
$('input[type=submit]').click(function(e){
    e.preventDefault();
    $(this).attr('disabled','disabled');
    var pmTextArea = $("#pmTextArea");
    var sendName = $("#pm_send_name");
    var sendID = $("#pm_send_id");
    var receiveName = $("#pm_receive_name");
    var receiveID = $("#pm_receive_id");
    var timesent = $("#pm_timesent");
    var url = "messages.php";
    if (pmTextArea.val() == ""){
      $("#interaction").html('Comment field is empty.').show().fadeOut(5000);
    }
    else {
    $.post(url,{ message: pmTextArea.val(), sendername: sendName.val(), senderid: sendID.val(), recname: receiveName.val(), recID: receiveID.val(), time: timesent.val()  },    function(data){
      $("#interaction").html('Message sent successfully.').show().fadeOut(5000);
      document.pmForm.pmTextArea.value='';
      });
    }
});