我的代码中存在一个问题,这是一个jQuery问题,但我无法弄清楚它是什么。当我上传产品并尝试选择父类别时,我的浏览器会冻结(就像它耗费了大量内存)。子选择菜单也显示父标题。当我编辑产品时父母和孩子正确显示并且在子选择菜单中我可以进行更改但是当我尝试使用父选择时它会再次冻结我的浏览器...
当我从get_child_options中删除“selected:selected”时,选择工作正常,但是当我编辑产品时,缺少先前选择的子类别。
这是产品上传部分,用户可以在其中选择类别:
<p class="admin-estate-add-section-input">
Parent category
</p>
<select class="admin-estate" name="parent" id="parent">
<option value=""<?=(($parent == '')?' selected':'')?>></option>
<?php while($p = mysqli_fetch_assoc($parentQuery)): ?>
<option value="<?=$p['id'];?>"<?=(($parent == $p['id'])?' selected':'')?>><?=$p['category'];?></option>
<?php endwhile; ?>
</select>
<br>
<br>
<p class="admin-estate-add-section-input">
Child category
</p>
<select class="admin-estate" name="child" id="child"></select>
<br>
<br>
这是调用child_categories.php文件的jQuery函数
<script>
function get_child_options(selected){
if(typeof selected === 'undefined'){
var selected = '';
}
var parentID = jQuery('#parent').val();
jQuery.ajax({
url: '/tartalomkezelo/admin/parsers/child_categories.php',
type: 'POST',
data: {parentID : parentID, selected: selected},
success: function(data){
jQuery('#child').html(data);
},
error: function(){alert("Something went wrong! Can't select category.")},
});
}
jQuery('select[name="parent"]').change(get_child_options);
</script>
这是child_categories.php文件:
<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/tartalomkezelo/core/init.php';
$parentID = (int)$_POST['parentID'];
$selected = sanitize($_POST['selected']);
$childQuery = $db->query("SELECT * FROM categories WHERE parent = '$parentID' ORDER BY category");
ob_start(); ?>
<option value=""></option>
<?php while($child = mysqli_fetch_assoc($childQuery)): ?>
<option value="<?=$child['id'];?>"<?=(($selected == $child['id'])?' selected':'');?>><?=$child['category'];?></option>
<?php endwhile; ?>
<?php echo ob_get_clean(); ?>
然后是产品上传文件的脚本:
<script>
jQuery('document').ready(function(){
get_child_options('<?=$category;?>');
});
</script>