PHP не возвращает никаких данных при отправке ajax-запроса - PullRequest
0 голосов
/ 11 апреля 2019

Когда я отправляю запрос на публикацию ajax в мой файл getMessages.php, он ничего не возвращает.

Я попытался вручную установить значения массива и распечатать их в консоли, и это, похоже, работает.

getMessages.php

<?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;
?>

JS AJAX

function getChat() {

    $.ajax({
        url: 'getMessages.php',
        type: 'POST',
        data: {getChat: 'yes'},
        dataType: 'JSON',
        success: function(data) {
            // testing
            console.log(data.startuser, data.msg);
        }

    })

}

Я хочу, чтобы он распечатывался в консоли для тестирования.

Ответы [ 4 ]

0 голосов
/ 11 апреля 2019

Привет, вы можете попробовать это следующим образом:

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";
}
 ?>

JavaScript:

 function getChat() {

    return $.ajax({
         url: 'getMessages.php',
         type: 'POST',
         data: {action: 'getChat',endUser:'mariokiller470'},
         dataType: 'JSON'
     })

 }

getChat()
.done(function(response){
  console.log(response);
})

Надеюсь, что это поможет

0 голосов
/ 11 апреля 2019

Упс!

Я забыл начать сеанс!

Спасибо PatrickQ!

0 голосов
/ 11 апреля 2019

Это решит проблему, так как вы возвращаете ответ в виде объектов

Обновления:

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;

}
?>

так в консоли ajax. эта строка кода будет работать нормально

console.log(data.startuser, data.msg);
0 голосов
/ 11 апреля 2019

данные перезаписываются в цикле снова и снова, я думаю, вы хотели бы сделать что-то вроде этого:

$x = 0;
while ($row = mysqli_fetch_array ($result)) {
        $data[$x]['startuser'] = $row['msg_startuser'];
        $data[$x]['msg'] = $ row['msg'];
        $x++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...