javascript - php mysqli fetch_all() renvoie json normalement, mais l'ajax frontal ne peut pas obtenir json ?
淡淡烟草味
淡淡烟草味 2017-05-16 13:11:56
0
1
928

code php

<?php //inclut "db_connect.php" ; $db = new MySQLi("localhost", "root", "password", "paginate"); $db->set_charset('utf8mb4'); header('Type de contenu : application/json;charset=utf-8'); $total = 0; //Nombre total de lignes de données du tableau $per_page = 6; // Nombre de lignes par page $current_page = 1; // Quelle page est actuellement affichée ? $total_pages = 0; //Nombre total de pages // Récupère le numéro de la page actuelle if (!empty($_GET['current_page'])) { $page_actuelle = $_GET['page_actuelle']; } // Récupère le nombre total de lignes de données du tableau $query1 = 'sélectionnez le nombre (*) de l'utilisateur'; $row1 = $db->query($query1); if ($row1 && $rowd = $row1->fetch_row()) { $total = $ligne[0] ; } // Récupère le nombre total de pages $total_pages = plafond($total / $par_page); // pagination $pre = ($current_page - 1) * $per_page ; $query2 = "sélectionner * dans la limite utilisateur $pre,$per_page" ; $lignes = $db->query($query2); $arr = []; si($lignes) { $arr = $rows->fetch_all(MYSQLI_ASSOC); } $pagination = [ 'total' => $total, 'par_page' => $par_page, 'page_actuelle' => $page_actuelle, 'total_pages' => $total_pages ]; array_push($arr, $pagination); echo json_encode($arr, true);

Capture d'écran du facteur :

Code js :

 window.onload = function () {
        getData(1);
    }

    function addURLParam (url, nom, valeur) {
        url += (url.indexOf("?") == -1 ? "?" : "&");
        url += encodeURIComponent(nom) + "=" + encodeURIComponent(valeur);
        URL de retour ;
    }
    
    fonction getData(page) {
        var data = document.getElementById("data");

        var xhr = new XMLHttpRequest();
        xhr.onreadystatechange = fonction () {
            si (xhr.readyState == 4 && xhr.status == 200) {
                var jsonText = xhr.responseText;
                console.log(JSON.parse(jsonText));
            }
        }
        var url = "paginate.php";
        url = addURLParam(url, "page_actuelle", "page");
        xhr.open("get", url, true);
        xhr.send();
    

Il n'y a aucun contenu dans la base de données devant la console Chrome

Devrait l'être

$query2 = "sélectionner * dans la limite utilisateur $pre,$per_page";
$lignes = $db->query($query2);

$arr = [];
si($lignes) {
  $arr = $rows->fetch_all(MYSQLI_ASSOC);

Il y a un problème avec SQL ici, car il y aura des erreurs avant si ($rows) est ajouté. Cependant, je suis très surpris de savoir pourquoi php peut fonctionner normalement. La version php est 7.0.8

淡淡烟草味
淡淡烟草味

répondre à tous(1)
巴扎黑

C'est un problème que js ne transmet pas correctement les paramètres dans addURLParam()

url = addURLParam(url, "current_page", "page");

changé en

url = addURLParam(url, "current_page", page);

C'est vraiment honteux de dire que j'ai découvert ce bug après avoir posté la question. J'ai édité et modifié la question une fois, mais l'école a eu une panne de courant et l'ordinateur est tombé en panne d'électricité, donc je n'ai pas pu la tester. . . . . .


Mais le point important est que j'ai ajouté la méthode addURLParam en dernier. Elle s'est avérée directe

.
xhr.open("get",  "paginate.php?current_page="+page, true);

addURLParam() est une méthode de programmation avancée js, dit-il

Une erreur qui se produit souvent lors de l'utilisation des requêtes GET est qu'il y a un problème avec le format de la chaîne de requête. Le nom et la valeur de chaque paramètre de la chaîne de requête doivent être encodés à l'aide de encodeURIComponent() avant d'être placés à la fin de l'URL

Les amis qui connaissent la raison peuvent répondre à ce point, je vais d'abord le rechercher~

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal