[英]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.