使用我的PHP脚本,Ajax无法正常工作

时间:2017-04-30 20:23:11

标签: javascript jquery ajax html5

我使用HTML5,PHP和JavaScript进行编程。我正在尝试使用Ajax来执行此操作:当我在#productoSeleccionado上选择一个选项时,此产品的大小显示为#tallaSeleccionada,但我认为此代码不合适。我相信函数代码和调用数据库都很好。

我导入了jQuery-ajax库。 productoSeleccionado效果很好但是当我选择其中一个选项时,tallaSeleccionada的选择中不显示任何内容。我不知道怎么说。

<p>
<h3>Seleccione producto:</h3>
<select id="productoSeleccionado" name="producto">
    <?php foreach ($productos as $producto) { ?>
    <option value="<?php echo $producto["OID_P"]; ?>">
        <?php echo $producto["CODIGO"] . "- " . $producto["CONCEPTO"]; ?>
        </option><?php } ?>
</select>
</p>

<script type="text/javascript">

    $("#productoSeleccionado").on("option", function () {
        $.get("gestionar_Selects.php", {
                productoSeleccionado: $('#productoSeleccionado').val()
            },
            function (data) {
                $("#tallaSeleccionada").empty();
                $("#tallaSeleccionada").append(data);
            }
        );

    });
</script>

<p>
<h3>Seleccione talla:</h3>
<select id="tallaSeleccionada" name="talla"></select>
</p>

我认为这段代码很好 gestionar_Selects.php

<?php
function listarTallas($conexion, $productoSeleccionado)
{
    try {
        //Puedo poner en vez de * NOMBRE_TALLA probado
        $stmt = $conexion->prepare('SELECT * FROM ASOC_LOCAL_PRODUCTO LEFT JOIN PRODUCTOS ON (ASOC_LOCAL_PRODUCTO.OID_P = PRODUCTOS.OID_P)'
            . 'LEFT JOIN TALLAS ON (ASOC_LOCAL_PRODUCTO.OID_T = TALLAS.OID_T)  LEFT JOIN LOCALIZACIONES ON (ASOC_LOCAL_PRODUCTO.OID_L = LOCALIZACIONES.OID_L) '
            . ' WHERE PRODUCTO.OID_P =:W_OID_P ORDER BY STOCK_MINIMO');
        $stmt->bindParam(':W_OID_P', $productoSeleccionado);
        $stmt->execute();
        return "";
    } catch (PDOException $e) {
        return $e->getMessage();
    }
}


if (isset($_GET["producto"])) {

    $conexion = crear_conexionBD()();
    $resultado = listarTallas($conexion, $_GET["producto"]);
    if ($resultado != NULL) {
        foreach ($resultado as $talla) {
            echo "<option value= "$talla["OID_T"]" > $talla["NOMBRE_TALLA"]</option>";
       }
    }
    cerrar_conexionBD()($conexion);
    unset($_GET["producto"]);
}
?>

1 个答案:

答案 0 :(得分:0)

将您的Javascript更改为使用on('change')

<script type="text/javascript">

    $("#productoSeleccionado").on('change', function () {
        $.get("gestionar_Selects.php", {productoSeleccionado: $('#productoSeleccionado').val()}, function (data) {
                $("#tallaSeleccionada").empty();
                $("#tallaSeleccionada").append(data);
            }
        );

    });
</script>

PHP

<?php
function listarTallas($conexion, $productoSeleccionado)
{
    try {
        //Puedo poner en vez de * NOMBRE_TALLA probado
        $stmt = $conexion->prepare('SELECT * FROM ASOC_LOCAL_PRODUCTO LEFT JOIN PRODUCTOS ON (ASOC_LOCAL_PRODUCTO.OID_P = PRODUCTOS.OID_P)'
            . 'LEFT JOIN TALLAS ON (ASOC_LOCAL_PRODUCTO.OID_T = TALLAS.OID_T)  LEFT JOIN LOCALIZACIONES ON (ASOC_LOCAL_PRODUCTO.OID_L = LOCALIZACIONES.OID_L) '
            . ' WHERE PRODUCTO.OID_P =:W_OID_P ORDER BY STOCK_MINIMO');
        $stmt->bindParam(':W_OID_P', $productoSeleccionado);
        $stmt->execute();
        $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); // get rows from DB
        return $rows;
    } catch (PDOException $e) {
        return $e->getMessage();
    }
}


if (isset($_GET["productoSeleccionado"])) {

    $conexion = crear_conexionBD()();
    $resultado = listarTallas($conexion, $_GET["productoSeleccionado"]);
    if ($resultado != NULL) {
        foreach ($resultado as $talla) {
            echo '<option value="' . $talla["OID_T"] . '" > ' . $talla['NOMBRE_TALLA'] . '</option>';
        }
    }
    cerrar_conexionBD()($conexion); 
    unset($_GET["productoSeleccionado"]);
}
?>