我正在设置动态下拉菜单:select#category上的选项会通知select#subcat的内容。
这是select#category的html:
<select name="category" id="category">
<option>Click Here to choose a category</option>
<?php foreach ($categories as $key => $category) { ?>
<option value="<?php echo $key ?>"><?php echo $category ?></option>
<?php } ?>
</select>
<select name="subcat" id="subcat">
<option><-- First Choose a Category</option>
</select>
这是jQuery语句:
$(document).ready(function(){
$("select#category").change(function(){
$("select#subcat").load("subcats.php",{ id: $(this).val(), ajax: 'true'});
});
});
这是subcats.php:
<?php
//source of categories
include("config.php") ;
//initiate option list
$options = '<option value="">Choose a Sub-category</option>'."\n" ;
if(!empty($_GET["id"])) {
//iterate through the categories
foreach ($categories as $key => $category) {
if ($_GET["id"] == $key) {
//select the data source
$subcats = file('subcat/'.$key.'.dat', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) ;
natsort($subcats);
//create the rest of the option list
foreach ($subcats as $subcat) {
list ($subname,$subkey ) =explode ("\t", $subcat) ;
$options .= '<option value="'.$subkey.'">'.$subname.'</option>'."\n" ;
}
echo $options ;
}
}
} else {
// if no variable given provide option list as error check
echo '<option value=""><-- Choose a Category First</option>
<option value="">Foo Bar</option>'."\n" ;
}
?>
我的理解是id: $(this).val()
提供了来自select#category
的选定选项以供在php文档中使用;我在这里吗?真的,如果我正确阅读文档,我甚至不需要, { id: $(this).val(), ajax: 'true'}
位
ajax请求.load
正在运行,因为错误检查菜单项会显示在select#subcats
中。
然而,这就是所有出现的:变量似乎没有通过......
李在这里帮帮忙?提前谢谢!
答案 0 :(得分:0)
在您的情况下this
属于select#subcat
。尝试使用此代码:
$(document).ready(function(){
$("select#category").change(function(){
$("select#subcat").load("subcats.php",{ id: $("select#category").val(), ajax: 'true'});
})
})
答案 1 :(得分:0)
在.load之前使用console.log($(this).val())
来调试提交的值
你确定数据是按每个get方法发送的吗?
的评论中找到示例:与上面相同,但会POST 附加参数 服务器和执行的回调 当服务器完成时 响应。
$("#feeds").load("feeds.php", {limit: 25}, function(){ alert("The last 25 entries in the feed have been loaded"); });
根据文件:“ 如果是数据,则使用POST方法 作为对象提供;否则,GET 假设。“
您只需使用$_REQUEST['id']
代替$_GET['id']
或$_POST['id']
来覆盖两者(有关更多信息,请参阅php.net::$_REQUEST)