Jquery ajax数据相关选择
我试图通过ajax post将一个select的值发送给另一个select,实际上我在idf中获取该值,但不在数据中,使用console.logdata我获取页面的所有htmlJquery ajax数据相关选择,jquery,ajax,post,Jquery,Ajax,Post,我试图通过ajax post将一个select的值发送给另一个select,实际上我在idf中获取该值,但不在数据中,使用console.logdata我获取页面的所有html <script> $(document).ready(function () { $('#specialite_id').change(function(){ var idf=$(this).val(); //var $id=$(this).serialize(); event.prev
<script>
$(document).ready(function () {
$('#specialite_id').change(function(){
var idf=$(this).val();
//var $id=$(this).serialize();
event.preventDefault();
$.ajax({
url : "index.php",
type : "POST",
data:'idf='+idf,
datatype: "text",
success : function(data){
$('#section').html(data);
console.log(data);
},
error : function(){
}
});
});
})
</script>
以下是html:
<select id="specialite_id">
<?php foreach( $rowAll as $row )
{
?>
<option value=<?php echo $row['id_specialite']; ?> > <?php echo $row['specialite']; ?> </option>
<?php
}
?>
</select>
<select id="section">
<?php
if(isset($_POST['idf'])){
//$idf = $database->escape_string($_POST['idf']);
$idf=$_POST['idf'];
if(!empty($idf)){
$sql3 = "SELECT section FROM section where id_specialite=:idf ";
$stmt3 = $connexion->prepare($sql3);
$stmt3->BindParam(':idf',$idf);
$stmt3->execute( );
$rowAll3 = $stmt3->fetchAll(PDO::FETCH_BOTH);
foreach( $rowAll3 as $row3)
{
?>
<option > <?php echo $row3['section']; ?> </option>
<?php } ?>
</select>
为什么它不起作用。。。有人有想法吗?我认为您传递的json格式错误,请尝试以下操作:
data:"{'idf':"+idf+"}",
我无法将值发送到同一页面,因此我创建了一个新页面fetch.php:
$sql2 = "SELECT * from section where id_specialite =:idf ";
$stmt2 = $connexion->prepare($sql2);
$stmt2->BindParam(':idf',$_POST["idf"]);
$stmt2->execute( );
$rowAll2= $stmt2->fetchAll(PDO::FETCH_BOTH);
$output='<option value="">'.$_POST["idf"].'</option>';
foreach( $rowAll2 as $row2)
{
$output ='<option value="'.$row2["id_section"].'">'.$row2["section"].'</option>';
echo $output;
}
我更改了脚本的代码:
<select id="section" name="section">
<option value=" "> selectioner section </option>
</select>
</form>
<script>
$(document).ready(function () {
$('#specialite_id').change(function(){
var idf=$(this).val();
console.log(idf);
$.ajax({
url : "fetch.php",
type : "POST",
data:{idf:idf},
datatype:"text",
success:function(data){
$('#section').html(data);
console.log(data);
}
});
});
})
</script>
它起作用了
有关更多信息:
获取这些数据需要一个单独的脚本,而不仅仅是调用index.php。否则是的,它当然会返回整个页面。您可以通过使用if语句来防止它,该语句表示是否有idf的POST值,然后不返回除字段之外的任何内容。但是这是两个不同功能的错误分离,如果你在页面上添加更多的ajax,你最终只会得到意大利面代码。我只是在测试ajax功能。。。我和codeigniter一起工作,我会分开。。但是如何确定我只需要select返回的值呢?您可以通过使用if语句来实现,正如我前面提到的。这只会生成一个字符串作为post变量,这不会起作用,特别是因为内容类型没有设置为JSON,服务器也没有尝试解码JSON。