PHP 文件没有从 JQuery 中获取 $POST 参数

Posted

技术标签:

【中文标题】PHP 文件没有从 JQuery 中获取 $POST 参数【英文标题】:PHP file not picking up $POST parameter from JQuery 【发布时间】:2021-08-12 08:19:37 【问题描述】:

非常感谢您的帮助。我有以下文件。 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>

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

【问题讨论】:

您是否尝试过检查您是否成功接收到发布的数据?在您的 inserttochat.php 中尝试 echo $_POST['inputmessage']; 以查看它是否已定义 您问题中的 PHP 代码是否在 inserttochat.php 脚本中?如果是这样,您是否希望将 &lt;script&gt; 块作为 AJAX 请求的一部分进行评估? 顺便说一句,您不使用 &lt;script type="text/javascript"&gt;alert... 输出值,而是将其作为 json、文本或 xml 传回。要使其执行脚本,您需要 .html() 而不是另一个警报。 【参考方案1】:

在我的开发系统上设置您的代码后,我发现您的 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');

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

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

【讨论】:

非常感谢,解释得很好——现在我明白了

以上是关于PHP 文件没有从 JQuery 中获取 $POST 参数的主要内容,如果未能解决你的问题,请参考以下文章

使用 Ajax 和 JQuery 从 PHP 文件中获取数据

jQuery 调用 PHP 文件从 mysql 数据库中获取数据?

带有json的Jquery表单没有获取值

使用 jQuery 的 $.ajax( ) 函数从 php 文件中获取 JSON 数据不起作用

使用 php 和 jquery ajax 从 mysql 数据库中获取数据

如何从 php 获取数据表 jquery 插件的 json 数据