Используйте ajax для получения данных json из php-файла

0

Right Im, использующий php для создания json файла


<?PHP 
header('Content-type: application/json');
include 'includes/db/connect.php';
$category = $_REQUEST['catname'];
$sql = "SELECT 'CDID', 'CDTitle', 'CDYear', 'pubID', 'CDPrice' FROM 'tiptop_cd' INNER JOIN tiptop_category ON tiptop_cd.catID=tiptop_category.catID WHERE catDesc = '{$category}'";

$result = mysqli_query($con,$sql);
$row = mysqli_fetch_array($result);
     while($row = mysqli_fetch_array($result)){

        $returned[] = $row;
     }

      echo json_encode($returned);

?>

и я хочу, чтобы моя php-страница использовала поле выбора, которое получает категории из базы данных


  <?php 

    $result = mysqli_query($con,"SELECT * FROM tiptop_category");
    //  echo "<table>";
    echo "<select id=\"catname\">";
     while($row = mysqli_fetch_array($result))
    {
      ?>
       <option name="<?=$row['catDesc']?>"><?=$row['catDesc']?></option>
      <?php

    }
    echo "</select>";

    ?> 

теперь я пытаюсь использовать этот ajax для вывода моих данных

<script type="text/javascript">
    var catname = "Classical";
    $.ajax({
        type: "GET",
        url: "./json.php?catname=" + catname,
        accepts: "json",
        dataType: "json",
        success: function(data, status, jqXHR){
            someFunction(data);
        },
        error: function(jqXHR, status, HTTPerror){
            alert(HTTPerror);
        }
    });
    function someFunction(data){
        console.log(data);
        var list = "<ul>";
        for (var i = 0; i < data.length; i++) {
            list += "<li><ul>";
            for (var j = 0; j < data[i].length; j++) {
                list += "<li>" + data[i][j] + "</li>";
            };
            list += "</ul></li>";
        };
        list += "</ul>";
        $('#wrapper').append(list);
    }
    </script>

    <div id="wrapper">
    </div>

но все, что я получаю, это пустой маркированный список

Теги:

1 ответ

0

Из того, как выглядит запрос db, вы должны получить список ассоциативных массивов, которые закодированы как объекты:

var list = "<ul>";
for (var i = 0; i < data.length; i++) {
    list += "<li><ul>";

    for(var key in data[i])
      if(data[i].hasOwnProperty(key))
        list += "<li>" + data[i][key] + "</li>";

    list += "</ul></li>";
};
list += "</ul>";

Ещё вопросы

Сообщество Overcoder
Наверх
Меню