我有一个选择从数据库中回显一个列(jobTitle),在更改时我试图在另一个html选择中显示,选择另一个列(company_name),但只有与第一个html选择相关的值。
我没有收到错误。第一个html选择值正在传递,但由于某种原因,它不是基于第二个选择中的数据库从数据库中进行选择。
我在想我的第二个SQL查询问题。
如果有人知道更有效的方法,我会非常感激地找出答案。PHP& HTML:
<select name="jobtitle_select" class="jobtitle_select">
<option class="" name="" value="" >-- Job title --</option>
<?php
$sql = $dbh->prepare("SELECT * FROM jobs_list");
if($sql->execute()) {
$sql->setFetchMode(PDO::FETCH_ASSOC);
}
while($row = $sql->fetch()) {
$jobTitle = $row['jobTitle'];
echo "<option class='' name='' value='$jobTitle' > $jobTitle </option>";
} // end of while // ?>
</select>
<?php
$jobtitle_select = $_POST['jobtitle_select'];
if ($jobtitle_select){
$sql = $dbh->prepare("SELECT * FROM jobs_list WHERE company_name = :jobtitle_select");
$sql->bindParam(':jobtitle_select', $jobtitle_select, PDO::PARAM_STR);
if($sql->execute()) {
$sql->setFetchMode(PDO::FETCH_ASSOC);
}
?>
<select class="company_name_select" >
<option class="" name="" value="" >-- Company name --</option>
<?php while($row = $sql->fetch()) {
$company_name = $row['company_name'];
echo "<option class='' name='' value='$company_name'> $company_name </option>";
} // end of while //
}?> <!-- end of if -->
</select>
JQUERY:
$('.jobtitle_select').change(function(){
$.ajax({
//create an ajax request to load_page.php
type: "POST",
data:$('.jobtitle_select'),
dataType: "html", //expect html to be returned
success: function(date){
$('.company_name_select').html(date);
}
})
});
答案 0 :(得分:1)
你的ajax电话不正确,或者更好的说不完整。您需要提供url,以及带有名称和值的已发布变量。
$('.jobtitle_select').change(function(){
$.ajax({
//create an ajax request to load_page.php
url: "load_page.php",
type: "POST",
data: {jobtitle_select: $('.jobtitle_select').val()},
dataType: "html", //expect html to be returned
success: function(date){
$('.company_name_select').html(date);
}
})
});
并且你的load_page.php文件应该有代码的php来读取数据库中的数据和html代码只显示选择的内部部分:
<?php
$jobtitle_select = $_POST['jobtitle_select'];
if ($jobtitle_select){
$sql = $dbh->prepare("SELECT * FROM jobs_list WHERE company_name = :jobtitle_select");
$sql->bindParam(':jobtitle_select', $jobtitle_select, PDO::PARAM_STR);
if($sql->execute()) {
$sql->setFetchMode(PDO::FETCH_ASSOC);
}
?>
<option class="" name="" value="" >-- Company name --</option>
<?php while($row = $sql->fetch()) {
$company_name = $row['company_name'];
echo "<option class='' name='' value='$company_name'> $company_name </option>";
} // end of while //
}?> <!-- end of if -->