Saya memiliki skrip (Users.php) yang menggunakan JSON_encode untuk menampilkan array objek dalam tabel HTML.

Seperti dalam:

Pengguna.php :

Html //tabel kosong

Script //mengisi tabel dengan menggunakan json encode untuk mendapatkan array php dan menampilkan isi tabel

MyPhp.php :

Mendapat info dari database dan membuat array.

File php saya berfungsi dengan baik dan begitu juga skrip saya. satu-satunya masalah adalah ketika saya menggunakan JSON_encode untuk mendapatkan array dari php ke skrip, itu menunjukkan kesalahan: Uncaught SyntaxError: Unexpected token '<' // pada baris 1 kode php

Pengguna saya.php:

 <body >
    <!-- adding user -->
    <form  class ="formArea" id = "addUser" action = "addUsers.php" method="POST">
      <!-- addUsers.php will add users to the database then display Users.php again -->
    </form>
    <!-- display users -->
        <table id="usersTable">
            <!-- table to display user info -->
        </table>
    </div>

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> <!--jquery-->
    <script>

        //display all users in table
        var users = <?php echo JSON_encode($rows); ?>
        
        displayUsers(users);
        function displayUsers(users){
            for(i = 0; i<users.length; i++)
            {
               //create table row
               //add user information to the row
            }
        }     
    </script>
    
</body>

MyPhp.php saya:

    <?php
// fur UI Users.php
// calls all users from the db and displays them in users table
$sql = new mysqli("localhost","root","","atds");

// Check connection
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . $mysqli -> connect_error;
  exit();
 }
 
 $query = "SELECT * FROM users";
 $result = $sql->query($query);           
 while($row = $result->fetch_object())
 {
     $rows[]=$row;
 }

 // Close connection
 $result->close();
 $sql->close();

?>

Yang saya coba:

Saya mencoba memasukkan file php sebelum menggunakan json_encode

<?php include'myPhp.php' ?>
var users = <?php echo json_encode($rows); ?> 

Ini berfungsi ketika saya menjalankan Users.php tetapi jika saya menambahkan pengguna (dengan mengirimkan formulir di halaman web ini), tambahkan file pengguna membaca Users.php lagi setelah pengguna ditambahkan, pengguna akhirnya tidak akan ditampilkan dan saya akan memiliki yang sama kesalahan: SyntaxError Tidak Tertangkap: Token tak terduga '<' // di baris 1 myPhp.php

Apakah ada cara lain untuk menggunakan JSON_encode yang tidak akan menghasilkan kesalahan ini?

0
layla l00 4 Januari 2021, 06:32

3 jawaban

Jawaban Terbaik

Terpecahkan. tabel ditampilkan dengan benar ketika saya menjalankan Users.php tetapi menunjukkan kesalahan itu saat menambahkan pengguna dengan menjalankan AddUsers.php yang berisi readfile('Users.php') di bagian akhir. masalahnya sebenarnya ada di readfile(Users.php)di addUsers.php.

Readfile tidak mengeksekusi Users.php tetapi hanya menampilkan elemen di dalamnya. oleh karena itu JSON_encode tidak pernah dieksekusi dan pengguna tidak dikenal Users.php.

Saya memecahkan masalah ini dengan mengubah readfile('Users.php') di addUsers menjadi include 'Users.php';

Kode Users.php menjadi:

<?php include 'displayUsers.php'; ?>;
        var users = <?php echo JSON_encode($rows); ?>;
        
        displayUsers(users);
        function displayUsers(users){...}
0
layla l00 4 Januari 2021, 06:55

Saya tidak mendapatkan kesalahan yang sama seperti Anda, tetapi MyUsers.php tidak tahu tentang variabel yang Anda coba gunakan:



    //display all users
    //users array contains names and roles
    var users = <br />
<b>Warning</b>:  Undefined variable $rows in <b>/var/www/html/public/temp/myUsers.php</b> on line <b>17</b><br />
null
        displayUsers(users);
    function displayUsers(users){
        for(i = 0; i<users.length; i++)
        {
            //create table row
            //add user information to the row
        }
    }

Ada beberapa cara berbeda untuk memasukkan $rows ke myUsers.php.

Salah satu cara yang lebih mudah dipahami saat Anda belajar adalah melakukan semuanya dalam satu halaman: dapatkan data Anda di bagian atas dan render HTML di bagian bawah.

MyUser2.php: Saya tidak menyiapkan database dan mengkodekan baris dengan keras. Dengan asumsi bahwa pengaturan basis data Anda berfungsi, Anda dapat menghapus komentar dan pengguna yang dikodekan secara keras. Perhatikan bahwa karena Anda mengeluarkan array JSON yang valid, Anda tidak perlu menguraikannya kembali di dalam javascript.

Ini akan terlihat seperti ini di browser:


    //display all users
    //users array contains names and roles
    var users = ["user1","user2","user3"];

        displayUsers(users);
    function displayUsers(users){
        for(i = 0; i<users.length; i++)
        {
            //create table row
            //add user information to the row
            document.write(users[i] + '<br>');
        }
    }

Daftar file MyUser2.php:

<?php
/*
// fur UI Users.php
// calls all users from the db and displays them in users table
$sql = new mysqli("localhost","root","","atds");

// Check connection
if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: " . $mysqli -> connect_error;
    exit();
}

$query = "SELECT * FROM users";
$result = $sql->query($query);
while($row = $result->fetch_object())
{
    $rows[]=$row;
}

// Close connection
$result->close();
$sql->close();
*/
$rows[] = 'user1';
$rows[] = 'user2';
$rows[] = 'user3';

?>
<body >
<!-- adding user -->
<form  class ="formArea" id = "addUser" action = "addUsers.php" method="POST">
    <!-- addUsers.php will add users to the database then display Users.php again -->
</form>
<!-- display users -->
<table id="usersTable">
    <!-- table to display user info -->
</table>
</div>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> <!--jquery-->
<script>

    //display all users
    //users array contains names and roles
    var users = <?php echo JSON_encode($rows); ?>;

        displayUsers(users);
    function displayUsers(users){
        for(i = 0; i<users.length; i++)
        {
            //create table row
            //add user information to the row
            document.write(users[i] + '<br>');
        }
    }
</script>

</body>

Ini akan membantu Anda memulai. Kerangka kerja yang baik untuk belajar PHP adalah CodeIgniter. Laravel adalah kerangka kerja yang hebat dan lebih populer tetapi menambahkan banyak hal ajaib yang membuat PHP biasa lebih sulit untuk dipelajari.

0
Chris Adams 4 Januari 2021, 05:17

Di "Users.php" Anda

Anda harus terlebih dahulu memasukkan "myPhp.php"

   <?php include'myPhp.php' ?>

Dan gunakan seperti ini:

var json = '<?php echo JSON_encode($rows); ?>';
var users = JSON.parse(json);
0
Jakob Lämmle 4 Januari 2021, 05:25