AJAX не работает после обновления php5 до php7 - PullRequest
0 голосов
/ 31 октября 2018

В моем исходном коде php5, когда пользователь открывает страницу индекса, происходит вызов ajax, чтобы проверить, есть ли сохраненный $_SESSION['user']. Если есть сеанс, пользователь будет отображаться. В противном случае страница перенаправляется на страницу входа. Как только я обновился до php 7, он перестал работать.

$.ajax({
type: 'POST',
url: "php/checksession.php",
})
.done(function(response) {
    console.log(response);
    var code = response[0].code;
    ///// if no loging session is stored, redirect back to loging page
    if (code == 0) {
        window.location.href = "login";
        ///// Session is found, update balance 
    } else {
        $('body').show();
        ///////////////////// Do other stuff	
    }
}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html> 
<head> 
 <meta http-equiv="content-type" content="text/html; charset=utf-8"> 
 <title>Title Goes Here</title>
</head>
<body style="display:none">
 <p>PageContent</p> 
</body> 
</html>

Вот код php7.

<?php
header('Content-type: application/json');
require 'connection.php';

// Get Access to DB
// if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (isset($_POST))
{
    ob_start();
    session_start();
    if (isset($_SESSION['user']))
    {
        $responseArray = array(
            'code' => '1',
            'type' => 'good',
            'message' => 'found'
        );
    }
    else
    {
        $responseArray = array(
            'code' => '0',
            'type' => 'bad',
            'message' => 'no session'
        );
    }
}
else
{
    $responseArray = array(
        'code' => '0',
        'type' => 'bad',
        'message' => 'no POST'
    );
}

if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{
    $Arrays = [];
    array_push($Arrays, $responseArray);
    $encoded = json_encode($Arrays);
    header('Content-Type: application/json');
    echo $encoded;
}
else
{
    echo $responseArray['message'];
} // else just display the message
?>

$_POST пусто, и данные Json не отправляются обратно в браузеры, поскольку этот оператор не выполняется:

if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) &&
   strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')

1 Ответ

0 голосов
/ 31 октября 2018

Попробуйте использовать другой метод для получения данных POST .... Я не знаю почему, но когда я использую AJAX, иногда данные POST становятся по-другому ...

<?php

    if(!isset($_POST)) {
        $_POST = json_decode(file_get_contents("php://input"));
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...