javascript - php mysqli fetch_all() mengembalikan json secara normal, tetapi ajax front-end tidak boleh mendapatkan json?
淡淡烟草味
淡淡烟草味 2017-05-16 13:11:56
0
1
929

kod php

<?php
//include "db_connect.php";
$db = MySQLi baharu("localhost", "root", "kata laluan", "halaman muka surat");
$db->set_charset('utf8mb4');

header('Content-type: application/json;charset=utf-8');

$total = 0; //Jumlah bilangan baris data jadual
$per_page = 6; // Bilangan baris setiap halaman
$current_page = 1; // Halaman manakah yang sedang dipaparkan?
$total_pages = 0; //Jumlah bilangan halaman

// Dapatkan nombor halaman semasa
jika (!kosong($_GET['halaman_semasa'])) {
  $halaman_semasa = $_GET['halaman_semasa'];
}

// Dapatkan jumlah bilangan baris data jadual
$query1 = 'pilih kiraan(*) daripada pengguna';
$row1 = $db->query($query1);
if ($row1 && $rowd = $row1->fetch_row()) {
  $jumlah = $rowd[0];
}

// Dapatkan jumlah halaman
$total_pages = siling($total / $per_pages);

// paging
$pra = ($halaman_semasa - 1) * $setiap_halaman;
$query2 = "pilih * daripada had pengguna $pre,$per_page";
$rows = $db->query($query2);

$arr = [];
jika($baris) {
  $arr = $rows->fetch_all(MYSQLI_ASSOC);
}
$penomboran = [
  'total' => $total,
  'per_page' => $per_page,
  'current_page' => $current_page,
  'total_pages' => $total_pages
];

array_push($arr, $penomboran);
echo json_encode($arr, true);

tangkapan skrin posmen:

kod js:

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

    fungsi addURLParam(url, nama, nilai) {
        url += (url.indexOf("?") == -1 ? "?" : "&");
        url += encodeURIComponent(name) + "=" + encodeURIComponent(value);
        pulangkan url;
    }
    
    fungsi getData(halaman) {
        var data = document.getElementById("data");

        var xhr = XMLHttpRequest baharu();
        xhr.onreadystatechange = fungsi () {
            if (xhr.readyState == 4 && xhr.status == 200) {
                var jsonText = xhr.responseText;
                console.log(JSON.parse(jsonText));
            }
        }
        var url = "paginate.php";
        url = addURLParam(url, "halaman_semasa", "halaman");
        xhr.open("dapat", url, benar);
        xhr.send();
    }

Tiada kandungan dalam pangkalan data di hadapan konsol chrome

Sepatutnya

$query2 = "pilih * daripada had pengguna $pre,$per_page";
$rows = $db->query($query2);

$arr = [];
jika($baris) {
  $arr = $rows->fetch_all(MYSQLI_ASSOC);
}

Terdapat masalah dengan sql di sini, kerana akan ada ralat sebelum ini jika ($rows) ditambah Namun, saya sangat terkejut mengapa php boleh berjalan seperti biasa class="img-wrap ">

淡淡烟草味
淡淡烟草味

membalas semua(1)
巴扎黑

Ini adalah masalah bahawa js tidak menghantar parameter dengan betul ke dalam addURLParam()

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

ditukar kepada

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

Memang memalukan untuk mengatakan bahawa saya menemui pepijat ini selepas saya menyiarkan soalan itu sekali, tetapi sekolah mengalami gangguan bekalan elektrik dan komputer kehabisan kuasa, jadi saya tidak dapat mengujinya. . . . . .


Tetapi perkara penting ialah saya menambah kaedah addURLParam terakhir

xhr.open("get",  "paginate.php?current_page="+page, true);
addURLParam() ialah kaedah dalam pengaturcaraan lanjutan js, katanya

Ralat yang sering berlaku semasa menggunakan permintaan GET ialah terdapat masalah dengan format rentetan pertanyaan. Nama dan nilai setiap parameter dalam rentetan pertanyaan mesti dikodkan menggunakan encodeURIComponent() sebelum diletakkan di hujung URL

Kawan-kawan yang tahu sebab boleh jawab point ni, saya akan search dulu~

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan