繁体   English   中英

Ajax无法在我的PHP脚本中正常工作

[英]Ajax isn't working properly with my PHP script

我正在用HTML5,PHP和JavaScript进行编程。 我正在尝试使用Ajax来执行此操作:当我在#productoSeleccionado上选择一个选项时,出现此产品的尺寸为#tallaSeleccionada但我认为此代码#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"]);
}
?>

更改您的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"]);
}
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM