【发布时间】:2020-03-29 04:53:13
【问题描述】:
我有一个只有一个选项的<select>,我想使用 PHP 从数据库中获取其余选项,然后使用 AJAX 使用 PHP 结果填充所述<select>。
不幸的是,我的代码不起作用,我对 AJAX 和 jQuery 都是新手并不感到惊讶,但我没有收到任何错误来指导自己解决问题。
PHP 按预期工作,因为它在网站的另一部分中使用,我对此没有任何问题,所以我的错误一定是在 AJAX 中(这里没什么大惊小怪的)。
在我的 HTML 下方:
<select class="custom-select my-1 mr-sm-2" id="producto" name="producto" required>
<option disabled selected value>Elegir...</option>
</select>
在我的 AJAX 代码下方:
<script type="text/javascript">
$(document).ready(function() {
$("#producto").click(function() {
$.ajax({
url: 'fetch_lista_productos_compra.php',
type: 'get',
success: function(data) {
$("#producto").append(data);
}
});
});
});
</script>
在我的 PHP 代码下面:
<?php
require $_SERVER['DOCUMENT_ROOT'].'/testground/php/db_key.php';
$conn = mysqli_connect($servername, $username, $password, $dbname);
$sql_query = mysqli_query($conn, "SELECT * FROM productos WHERE disponibilidad = 'disponible'");
while ($row = mysqli_fetch_assoc($sql_query)) {
$titulo = $row['titulo'];
echo <<<EOT
<option value="$titulo">$titulo</option>\n
EOT;
}
?>
一如既往地非常感谢您的任何帮助,并感谢您的宝贵时间。
重要编辑
<select> 有一个重复的 ID,也许我应该从一开始就说明这一点,因为我知道这是导致我的问题的原因。
事实上,在这个<form> 中,选择是根据用户请求动态创建的。他们点击 添加产品 并创建一个带有可用产品的新选择,我知道所述输入的 id/名称必须具有 [ ] (id="producto[]")要转换为数组,但我不知道如何让 AJAX 处理这个动态创建的重复选择问题。我为这个迟来的声明道歉,我现在意识到它是最重要的。
【问题讨论】:
-
可能使用
class而不是id并且当您需要通过 ajax 添加新选项时,使用$(this)仅添加到特定选择? -
很好的建议 @Swati 遗憾的是它没有用,也许我没有正确使用
this选择器,我将脚本的更新版本粘贴到了 pastebin 上,以保持此评论的可读性。请检查一下,pastebin.com/raw/rtXz8BkZ。 -
把
var ele=$(this);从你的ajax调用中写出来,在你的成功函数下写ele.append(data);它应该可以工作。检查this答案。 -
您的控制台是否显示任何错误?正确的数据是否来自 ajax 调用?因为,我在 ajax 调用中没有发现任何错误。