如果您有这样的HTML:
你可以有这样的jQuery代码:
$(document).ready(function() { var $clients = $('#clients'); $clients.change(function() { var client_id = $clients.val(); $.getJSON("getProjects.php", {id: client_id}, function(projects) { $projects = $('#projects'); $projects.empty(); $.each(projects, function() { var option = $('').attr('value', this.id).text(this.name); $projects.append(option); }); }); }); });
然后让getProjects.php返回如下内容:
$sth = mysql_query( sprintf( "SELECT * FROM projects WHERE client_id = %s", mysql_real_escape_string($_GET['id']) ) ); $projects = array(); while($r = mysql_fetch_assoc($sth)) { $projects[] = array('id' => $r['id'], 'name' => $r['name']); } print json_encode($projects); exit;
我没有测试过所有这些,但我认为它或多或少都是你想要的.
编辑 - 测试和工作,显然它可能不是你需要的,但它让你知道如何去做.希望能帮助到你.
编辑2 - 您的代码存在问题:
$.getJSON("../inc/get-projects.php", {id: client_id}, function(projects){ projects = $('#p_id'); projects.empty(); $.each(projects, function() { var option = $('').attr('value', this.id).text(this.name); projects.append(option); }); });
您将projects
使用projects
第二行覆盖传入函数的内容.我$
在我的代码中使用了一个来区分这两者,这可能不是最好的方法.要修复,请将代码更改为:
$.getJSON("../inc/get-projects.php", {id: client_id}, function(data){ projects = $('#p_id'); projects.empty(); $.each(data, function() { var option = $('').attr('value', this.id).text(this.name); projects.append(option); }); });