我需要使用数据库中的数据填充相关的选择。 HTML页面包含select
id
'fontes'和select
id
'cargos'。 jQuery代码现在:
$("#fontes").change(function () {
$.ajax({
type: "POST",
url: "json_cargos_fonte.php",
data: ({fonte: $("#fontes").val()}),
dataType: "json",
success: function(json){
var options = "";
$.each(json, function(key, value){
options += '<option value="' + key + '">' + value + '</option>';
});
$("#cargos").html(options);
}
});
});
json_cargos_fonte.php的内容:
<?php
include ("conexao.php");
header('Content-type: text/json');
$fonte = $_POST['fonte'];
$retorno = array();
$queryCargos = "SELECT * FROM `cargos` WHERE `fonte` = '$fonte' ORDER BY `cargo`";
$resultCargos = $mysqli->query($queryCargos) or trigger_error($mysqli->error."<br>[ $queryCargos]");
while ($row = $resultCargos->fetch_object()) {
$retorno[] = $row->cargo;
}
echo json_encode($retorno);
?>
我已经测试过设置手动值而不是'$ fonte'并且它有效,但是传递在fontes中选择的值不起作用。除了我在HTML中编写的默认选项之外,没有选项出现:
<select id="cargos" name="cargos" style="min-width: 250px;">
<option>Selecione um Cargo</option>
</select>
答案 0 :(得分:1)
如果你想用jquery获得选定的值,试试这个
$("#fontes option:selected").val();
答案 1 :(得分:0)
为了使这一行有效:
$fonte = $_POST['fonte'];
您需要在ajax调用中序列化数据:
data: $.serialize({fonte: $("#fontes").val()}),
答案 2 :(得分:0)
jQuery更改函数内部select的警告值,并看到它在字符串的末尾添加了一个'\'。因此,例如,InfoJobs显示为InfoJobs \
<强>解决方案:强>
var fonte = $("#fontes").val();
var fonteNew = fonte.replace("\\","");
然后,在$.ajax
内:
type: "GET",
和
data: {fonte: fonteNew},
在PHP文件中,从POST更改为GET。