PHP 文件未从 JQuery 获取 $POST 参数

PHP file not picking up $POST parameter from JQuery

非常感谢您的帮助。我有以下文件。 jquery 事件侦听器中的两个警报都有效,但 if (isset) 块中的警报无效,因为它正在发布到自身。非常感谢你!我已经缩写了代码,所有内容都在其正确的标签内。


    <?php session_start();
    include("config.php");



$myID = $_POST['chatid'];
$_SESSION['chateeID'] = $myID;


        
  if(isset($_POST['inputmessage'])) {
    echo '<script type="text/javascript">alert("got in here");</script>';
      
      $sMessage = mysqli_real_escape_string($_POST['inputmessage']);
      if ($sMessage != '') {

          


          $sql = "INSERT INTO chatmessages (user_one_id, user_two_id, mymessage, action_user_id)
          VALUES ('$user1', '$user2', '$sMessage', '$action_user_id')";
          
          
          // Perform a query, check for error
          
          
          if (!mysqli_query($con,$sql)){
              echo '<script type="text/javascript">alert("'.mysqli_error($con).'");</script>';
              
          }
      }
      
  }


<script>
  $('#ChatInputBox').keydown(function (e) {
      var keyCode = e.keyCode || e.which;
      var txt = $("#ChatInputBox").val();
      
      if (keyCode == 13 && txt!="") {
        alert("txt is: "+txt);
        $.post("inserttochat.php", { inputmessage: txt }, function(result){
          alert("got to callback!");
        });
          
      }
      
  });


</script>

我在另一个页面上以完全相同的方式执行此操作,但在这里找不到差异。

在我的开发系统上设置您的代码后,我发现您的 PHP 代码正在发送的一小段脚本被正确发送,并且被正确接收但没有被 jQuery AJAX代码。

如果您希望该提醒显示在您的页面中,您需要将其放置在 HTML 元素中

 <div id="response"></div>

然后

        $.post("inserttochat.php", { inputmessage: txt }, function(result){
          alert("got to callback!");
          $("response").html(result);
        });

更好的方法是将某种状态回显为 JSON 对象,然后将其解压缩到 Javascript.

中的 alert
echo json_encode((object)['status'=>'ok', 'msg'=>'All good']);

然后

    $.post("inserttochat.php", { inputmessage: txt }, function(result){
      alert("Response: "+result.status+', '+result.msg);
    },'json');

注意添加到 POST 请求的 json 数据类型*.

  • 此处更好的方法是将所有响应标准化为 JSON,然后在 PHP 文件的顶部添加 header("Content-type: application/json");。这将告诉 jQuery 数据是什么,而不是你必须在浏览器中强制问题。