jQuery和Auto-populat选择
我有一个简单的页面,我可以选择一个客户端,然后我选择autopopulate到属于客户端的项目。 我使用PHP / MySQL来提取结果。
我看了看这个: http : //remysharp.com/2007/01/20/auto-populating-select-boxes-using-jquery-ajax/但我认为从页面上的两个字段开始。 我试图重做代码,但没有那么好。
var client_id = $('#c_id').val(); $.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); }); });
PHP:
$r['p_id'], 'name' => $r['p_title']); } print json_encode($projects); exit; ?>
如果您有这样的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); }); });
这个问题的答案可能会有所帮助: 使用javascript和jquery,用数组结构填充相关的选择框