За последние 24 часа нас посетили 21615 программистов и 1017 роботов. Сейчас ищут 679 программистов ...

Ошибка! Uncaught SyntaxError: Unexpected token < in JSON at position 0

Тема в разделе "PHP и базы данных", создана пользователем JenyaJenya, 1 июн 2019.

  1. JenyaJenya

    JenyaJenya Новичок

    С нами с:
    20 янв 2019
    Сообщения:
    3
    Симпатии:
    0
    Пытаюсь вывести товары из своей бд на страницу, что не так?
    Текст ошибки "Uncaught SyntaxError: Unexpected token < in JSON at position 0
    at JSON.parse (<anonymous>)
    at Object.showGoods [as success] (shop.js:12)
    at i (jquery-3.2.1.min.js:2)
    at Object.fireWith [as resolveWith] (jquery-3.2.1.min.js:2)
    at A (jquery-3.2.1.min.js:4)
    at XMLHttpRequest.<anonymous> (jquery-3.2.1.min.js:4)"

    Все файлы:
    HTML:
    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <meta charset="utf-8">
    4. body {
    5.     background-image: linear-gradient(to left, white, blue);
    6.     }
    7. </head>
    8. <div class="goods-out"></div>
    9. <script src="js/jquery-3.2.1.min.js"></script>
    10. <script src="js/shop.js"></script>
    11. </body>
    12. </html>
    Код (Javascript):
    1. function init() {
    2.     $.post(
    3.     "core.php",
    4.     {
    5.         "action" : "init"
    6.     },
    7.     showGoods
    8.     );
    9. }
    10. function showGoods(data) {
    11.     data = JSON.parse(data);
    12.     console.log(data);
    13.     var out='<select>';
    14.     for (var id in data) {
    15.         out +=`<option>${data[id].name}</option>`;
    16.         }
    17.     out +='</select>';
    18.     $('.goods-out').html(out);
    19.        
    20. }
    21.    
    22. $(document).ready(function () {
    23.     init();
    24. });
    PHP:
    1. <?php
    2. $action = $_POST['action'];
    3. require_once 'function.php';
    4. switch ($action) {
    5.     case 'init':
    6.     init();
    7.     break;
    8. }
    9. ?>
    PHP:
    1. <?php
    2. $host = "localhost";
    3. $user = "mysql";
    4. $pass = "mysql";
    5. $name = "eshop";
    6. function connect(){
    7. $db = mysqli_connect($host, $user, $pass, $name);
    8. if($db){
    9. echo "";
    10. }else{
    11. echo mysqli_error();
    12. }
    13. function init(){
    14.     //список товаров
    15.     $db = connect();
    16.     $sql = "SELECT * FROM goods";
    17.     $result = mysqli_query($db,$sql);
    18.    
    19.     if (mysqli_num_rows($result) > 0) {
    20.         $out = array();
    21.         while($row = mysqli_fetch_assoc($result)) {
    22.             $out[$row["id"]] = $row;
    23.         }
    24.         echo json_encode($out);
    25.     } else {
    26.         echo "0";
    27.     }
    28.     mysqli_close($db);
    29. }
    30. ?>
     
  2. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    PHP:
    1. <?php
    2. $host = "localhost";
    3. $user = "mysql";
    4. $pass = "mysql";
    5. $name = "eshop";
    6. function connect(){
    7. $db = mysqli_connect($host, $user, $pass, $name);
    8. if($db){
    9. echo "";
    10. }else{
    11. echo mysqli_error();
    12. }
    13. function init(){
    14.     //список товаров
    15.     $db = connect();
    16.     $sql = "SELECT * FROM goods";
    17.     $result = mysqli_query($db,$sql);
    18.  
    19.     if (mysqli_num_rows($result) > 0) {
    20.         $out = '<select>';
    21.         while($row = mysqli_fetch_assoc($result)) {
    22.             $out .= '<option>'.$row["name"].'<option>';
    23.         }
    24.         $out .='</select>';
    25.         echo $out;
    26.     } else {
    27.         echo "0";
    28.     }
    29.     mysqli_close($db);
    30. }
    31.  
    32. ?>
    Код (Javascript):
    1. $.post( "core.php", { action:"init" })
    2.   .done(function(data) {
    3.        if(data != 0){
    4.               $('.goods-out').html(data);
    5.        }
    6.   });
     
  3. JenyaJenya

    JenyaJenya Новичок

    С нами с:
    20 янв 2019
    Сообщения:
    3
    Симпатии:
    0

    PHP:
    1. <?php
    2. $action = $_POST['action'];
    3.  
    4. require_once 'function.php';
    5.  
    6. switch ($action) {
    7.     case 'init':
    8.     init();
    9.     break;
    10. }
    11.  
    12. ?>
    13.  
    14. Здесь теперь ругается на неизвестную функцию init
     
  4. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    Зачем вы вообще передаете туда post init?
    нельзя что ли просто сделать так:
    PHP:
    1. <?php
    2. require_once'function.php';
    3. $out = init();
    4. ?>
    5. <!DOCTYPE html>
    6. <html lang="en">
    7. <head>
    8. <meta charset="utf-8">
    9. <style>
    10. body {
    11.     background-image: linear-gradient(to left, white, blue);
    12.     }
    13. </style>
    14. </head>
    15. <body>
    16. <div><?=$out?></div>
    17. <script src="js/jquery-3.2.1.min.js"></script>
    18. <script src="js/shop.js"></script>
    19. </body>
    20. </html>
     
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.748
    Симпатии:
    1.321
    Адрес:
    Лень
    15 строка js - кавычки
    --- Добавлено ---
    @Artur_hopf, смотри коннект функцию внимательно. Ты копипастишь ошибку грубую
    --- Добавлено ---
    крч, тут много чего не правильного
     
  6. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @JenyaJenya, кто вас научил делать вот так:
    PHP:
    1. function init(){
    2.     //список товаров
    3.     $db = connect();
     
  7. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    Да я к тому что можно же без js, даже если надо что то передать:

    PHP:
    1. <?php
    2. $host = "localhost";
    3. $user = "mysql";
    4. $pass = "mysql";
    5. $name = "eshop";
    6.  
    7. function init(){
    8.     //список товаров
    9.     $db = mysqli_connect($host, $user, $pass, $name);
    10.     $sql = "SELECT * FROM goods";
    11.     $result = mysqli_query($db,$sql);
    12.     if (mysqli_num_rows($result) > 0) {
    13.         $out = '<select>';
    14.         while($row = mysqli_fetch_assoc($result)) {
    15.             $out .= '<option>'.$row["name"].'<option>';
    16.         }
    17.         $out .='</select>';
    18.         mysqli_close($db);
    19.         return $out;
    20.     } else {
    21.         mysqli_close($db);
    22.         return false;
    23.     }
    24. }
    25. ?>
    PHP:
    1. <?php
    2. include 'function.php';
    3. $out = init();
    4. ?>
    5. <!DOCTYPE html>
    6. <html lang="en">
    7. <head>
    8. <meta charset="utf-8">
    9. <style>
    10. body {
    11.     background-image: linear-gradient(to left, white, blue);
    12.     }
    13. </style>
    14. </head>
    15. <body>
    16. <div><?=$out?></div>
    17. </body>
    18. </html>