J'essaye de passer une variable JS dans la fonction AJAX où cette variable est utilisée dans la requête SQL. Plus tard, cela renvoie des données dans un tableau codé en json. (Actuellement, j'ai édité du code pour transmettre le fichier php en tant qu'action sur le formulaire soumis pour déboguer les erreurs)

J'ai essayé une autre méthode pour passer des données à la fonction AJAX comme les données: "categoryid" + catid

Fonction JS:

function products(category){
        var catid = category.value
        console.log(catid)
        if(catid==''){
            document.getElementById("productname").value='';
        }else{
            $.ajax({
            url: "getProductName.php",
            type: 'POST',
            data: {
                categoryId: catid
            },
            success: function(response){
                var len=response.length;
                console.log("array length"+len)
                for(var i=0;i<len;i++){
                    var name = response[i].name;
                    console.log("name is: "+name)
                    var dat = "<option value=" + name + "></option>"
                }
            $("#productname").append(dat);
                }
            })
        }
    }

appel de la fonction JS:

    <select class="form-control" id="productcategory"
    name="productcategory" onchange="products(this);">

page php où la variable JS est passée.

    <?php
        session_start();
        require_once '../config/connect.php';
        $cat = $_POST['categoryId'];
        echo $cat;
        $query = "SELECT * FROM `products` WHERE catid='$cat'";
        echo $query;
        $result = mysqli_query($connection, $query);
        while($r = mysqli_fetch_assoc($result)){
            $prodname = $r['name'];
            echo $prodname;
            $product_arr[] = array("name" => $prodname);
        }
        echo json_encode($product_arr);
        ?>
1
V k 3 nov. 2019 à 15:14

1 réponse

Utilisez ce code pour votre demande ajax. Vous devez indiquer à ajax que le type de données de réponse sera un json. Parcourez ensuite chaque élément et créez un option pour le sélecteur.

$.ajax({ 
    type: 'POST', 
    url: 'getProductName.php', 
    data: { categoryId: catid }, 
    dataType: 'json',
    success: function (data) { 
        $.each(data, function(index, element) {
            $('#productname').append($('<option>', {
                value: element.name
            }));
        });
    }
});
0
Kalesh Kaladharan 3 nov. 2019 à 14:45