Estoy intentando pasar una variable JS a la función AJAX donde esta variable se utiliza en la consulta sql. Más adelante, esto devuelve datos en la matriz codificada en json. (Actualmente he editado código para pasar el archivo php como acción en el formulario enviar para depurar los errores)

He probado otro método de pasar datos a la función AJAX como datos: "categoryid"+catid

Función 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);
                }
            })
        }
    }

llamando a la función JS:

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

php donde se pasa la variable JS.

    <?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 a las 15:14

1 respuesta

Use este código para su solicitud ajax. Debería indicarle a ajax que el tipo de datos de respuesta será json. Luego, recorra cada elemento y cree un option para el selector.

$.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 a las 14:45