PHP在发送ajax请求时不返回任何数据
当我向getMessages.php文件发送ajax post请求时,它不会返回任何内容 我尝试过手动设置数组值并在控制台中打印它们,这似乎很有效 getMessages.phpPHP在发送ajax请求时不返回任何数据,php,mysql,ajax,Php,Mysql,Ajax,当我向getMessages.php文件发送ajax post请求时,它不会返回任何内容 我尝试过手动设置数组值并在控制台中打印它们,这似乎很有效 getMessages.php <?php require_once "mysqli.php"; $data = array(); if (isset($_POST['getChat']) && !empty($_POST['getChat'])) { $username = $_SESSION["username
<?php
require_once "mysqli.php";
$data = array();
if (isset($_POST['getChat']) && !empty($_POST['getChat'])) {
$username = $_SESSION["username"];
$result = mysqli_query($conn, "SELECT msg_startuser, msg, time
FROM messages
WHERE msg_startuser = '{$username}' and msg_enduser = 'mariokiller470'
UNION
SELECT msg_startuser, msg, time
From messages
WHERE msg_startuser = 'mariokiller470' and msg_enduser = '{$username}'
order by time;
");
while ($row = mysqli_fetch_array($result)) {
$data['startuser'] = $row['msg_startuser'];
$data['msg'] = $row['msg'];
}
}
echo json_encode($data);
exit;
?>
我希望它在控制台中打印出来进行测试。循环中的数据会一次又一次地被覆盖,我想您应该这样做:
$x = 0;
while ($row = mysqli_fetch_array ($result)) {
$data[$x]['startuser'] = $row['msg_startuser'];
$data[$x]['msg'] = $ row['msg'];
$x++;
}
哎呀
我忘了开始上课了
谢谢帕特里克 这将解决问题,因为您将响应作为对象返回 An更新:
You will need to initialize session
数组的数据参数应该在if语句中
请尝试下面的代码
<?php
require_once "mysqli.php";
session_start();
if (isset($_POST['getChat']) && !empty($_POST['getChat'])) {
$username = $_SESSION["username"];
$data = array();
$result = mysqli_query($conn, "SELECT msg_startuser, msg, time
FROM messages
WHERE msg_startuser = '{$username}' and msg_enduser = 'mariokiller470'
UNION
SELECT msg_startuser, msg, time
From messages
WHERE msg_startuser = 'mariokiller470' and msg_enduser = '{$username}'
order by time;
");
while ($row = mysqli_fetch_array($result)) {
$startuser = $row['msg_startuser'];
$msg = $row['msg'];
$data = array("startuser" =>$startuser, "msg" =>$msg);
}
echo json_encode($data);
exit;
}
?>
您好,您可以这样尝试: php脚本:
<?php
require_once "mysqli.php";
session_start();// start the session
$data = array();
if (isset($_SESSION["username"])) {
if (isset($_POST["endUser"]) && isset($_POST["action"])) {
$case = $_POST["action"];
$endUser = $_POST["endUser"];
$username = $_SESSION["username"];
switch (case) {
case 'getChat':
$result = mysqli_query($conn, "SELECT msg_startuser, msg, time
FROM messages
WHERE msg_startuser = '{$username}' and msg_enduser = '{$endUser}'
UNION
SELECT msg_startuser, msg, time
From messages
WHERE msg_startuser = '{$endUser}' and msg_enduser = '{$username}'
order by time;
");
while ($row = mysqli_fetch_assoc($resultado)) {
if (isset($row['msg_startuser']) && isset($row['msg'])) {
$temp = array(
"user"=>$row['msg_startuser'],
"msg"=>$row['msg']
);
}
$data[] = $temp;
}
echo json_encode($data);
break;
}
}
}else {
echo "error-403";
}
?>
希望它有帮助可能是问题的根源,也可能不是问题的根源,但您似乎没有开始会话。警告:您对参数化预处理语句非常开放,应该使用参数化预处理语句,而不是手动生成查询。它们由或提供。永远不要相信任何类型的输入,尤其是来自客户端的输入。即使您的查询仅由受信任的用户执行,。注意:许多问题都可以通过检测和解决,因此所犯的任何错误都不会轻易被忽略。许多返回值不能忽略,您必须注意每一个。异常不需要单独检查,它们可以在更高级别的代码中被捕获。你是在@Bean还是这只是一个点击并运行的过程?我在这里。我忘了启动会话。只需使用
$data[]=['startuser'=>$row['msg\u startuser'],'msg'=>$row['msg']
。$x
是毫无意义的,很容易以一种糟糕的方式弄糟。也不清楚$data
是如何以一个神秘而混乱的空格结束的$data
。这无法解释“它不会返回任何东西”,它只会解释结果较少的情况(一个)比预期的要多。我认为这不是答案,因为OP看起来根本不想要循环,因为他们似乎正在获取一条唯一的记录。@Dharman查询中没有限制,因此可以返回任意数量的记录。@tadman True,可能是任何一种方式,但答案看起来更像是一条注释而不是t他给出了一个问题的解决方案。嗯。我尝试了你的代码,但从console.log中什么也没有得到
console.log(data.startuser, data.msg);
<?php
require_once "mysqli.php";
session_start();// start the session
$data = array();
if (isset($_SESSION["username"])) {
if (isset($_POST["endUser"]) && isset($_POST["action"])) {
$case = $_POST["action"];
$endUser = $_POST["endUser"];
$username = $_SESSION["username"];
switch (case) {
case 'getChat':
$result = mysqli_query($conn, "SELECT msg_startuser, msg, time
FROM messages
WHERE msg_startuser = '{$username}' and msg_enduser = '{$endUser}'
UNION
SELECT msg_startuser, msg, time
From messages
WHERE msg_startuser = '{$endUser}' and msg_enduser = '{$username}'
order by time;
");
while ($row = mysqli_fetch_assoc($resultado)) {
if (isset($row['msg_startuser']) && isset($row['msg'])) {
$temp = array(
"user"=>$row['msg_startuser'],
"msg"=>$row['msg']
);
}
$data[] = $temp;
}
echo json_encode($data);
break;
}
}
}else {
echo "error-403";
}
?>
function getChat() {
return $.ajax({
url: 'getMessages.php',
type: 'POST',
data: {action: 'getChat',endUser:'mariokiller470'},
dataType: 'JSON'
})
}
getChat()
.done(function(response){
console.log(response);
})