我使用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"]);
}
?>
答案 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"]);
}
?>