зависимый выпадающий список не заполняется - PullRequest
0 голосов
/ 21 марта 2019

Я пытаюсь заполнить раскрывающийся список, в зависимости от того, какой округ был выбран, во втором раскрывающемся списке должны быть указаны провинции выбранного округа.

Я не понимаю, почему второй раскрывающийся список не заполняется. Я получаю ответ JSON в консоли, поэтому PHP верен. Я уверен, что это что-то глупое, но я просто не вижу этого. Заранее спасибо.

index.php page

<?php
    include "config.php";
?>
<!doctype html>
<html>
    <head>
        <title>dropdown</title>
        <link href="style.css" rel="stylesheet" type="text/css">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <script src="jquery-1.12.0.min.js" type="text/javascript"></script>

        <script type="text/javascript">
            $( document ).ready( function () {

                $( "#country" ).change( function () {
                var countryid = $( this ).val();

                    $.ajax( {
                        url: 'getUsers.php',
                        type: 'POST',
                        data: {
                            countryid: countryid
                        },
                        dataType: 'json',
                        success: function ( response ) {

                            var len = response.length;

                            $( "#province" ).empty();
                            for ( var i = 0; i < len; i++ ) {
                                var id = response[ i ][ 'provinceid' ];
                                var name = response[ i ][ 'provincename' ];

                                $( "#province" ).append( "<option value='" + id + "'>" + name + "</option>" );

                            }
                        }
                    } );
                } );

            } );
        </script>
    </head>
    <body>


        <div>Country</div>
        <select id="country">
            <option value="0">- Select -</option>
            <?php 
                // Fetch Country
                $stmt = $conn->prepare('SELECT * FROM countries');
                $stmt->execute();

                while($countries = $stmt->fetch()) {

                $countryid = $countries['id'];
                $countryname_en = $countries['countryname_en'];

                // Option
                echo "<option value='".$countryid."' >".$countryname_en."</option>";
                }


            ?>
        </select>
        <div class="clear"></div>

        <div>Province</div>
        <select id="province">
            <option value="0">- Select -</option>
        </select>
    </body>
</html>

PHP

<code><?php

    include "config.php";

    var_dump($_POST);
    $countryid = $_POST['countryid'];

    $countryid = "CA";

    $stmt = $conn->prepare('SELECT * FROM provincestates WHERE countryid = :countryid');
    $stmt->execute(array(
        ':countryid' => $countryid
    ));

    /*
    echo "<pre>";
    echo "prov is:" . $province_array = array();
    echo "
"; * / while ($ провинция = $ stmt-> fetch (PDO :: FETCH_ASSOC)) { $ провинция = $ провинция ['provincestatecode']; $ провинция = $ провинция ['provincestatename_en']; $ Province_array [] = массив ( "провинция" => $ провинция, "провинция" => $ провинция ); } echo json_encode ($ Province_array);

Ответы [ 2 ]

0 голосов
/ 01 апреля 2019

Я наконец-то понял:

Очевидно, что JSON.parse устарел, и мне пришлось изменить его на var json = JSON.parse (response);просто изменить ответ = ответ

Спасибо за вашу помощь!

0 голосов
/ 21 марта 2019

Я не слишком знаком с jQuery, но, похоже, вам нужно проанализировать ответ, используя JSON.parse (или нативный метод jQuery?), И тогда вы сможете получить доступ к данным ОК. Следующее может указать вам правильное направление или нет, так как оно не проверено ...

<script>
    $( document ).ready( function () {

        $( "#country" ).change( function () {
            var countryid = $( this ).val();

            $.ajax( {
                url: 'getUsers.php',
                type: 'POST',
                data: {
                    countryid: countryid
                },
                dataType: 'json',
                success: function ( response ) {
                    var json=JSON.parse( response ); /* PARSE the data */
                    $( "#province" ).empty();

                    for( var i in json ){/* access using object notation */
                        var obj=json[ i ];
                        var id=obj.provinceid;
                        var name=obj.provincename;

                        $( "#province" ).append( new Option(id,name) );
                    }
                }
            });
        });
    });
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...