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
脚本中?如果是这样,您是否希望将 <script>
块作为 AJAX 请求的一部分进行评估?
顺便说一句,您不使用 <script type="text/javascript">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
请求*。
header("Content-type: application/json");
。这将告诉 jQuery 数据是什么,而不是您必须在浏览器中强制执行该问题。
【讨论】:
非常感谢,解释得很好——现在我明白了以上是关于PHP 文件没有从 JQuery 中获取 $POST 参数的主要内容,如果未能解决你的问题,请参考以下文章
使用 Ajax 和 JQuery 从 PHP 文件中获取数据
jQuery 调用 PHP 文件从 mysql 数据库中获取数据?
使用 jQuery 的 $.ajax( ) 函数从 php 文件中获取 JSON 数据不起作用