Cou*_*lin -1 javascript php jquery auto-populate
我有一个简单的页面,我可以选择一个客户端,然后我选择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 = $('<option/>').attr('value', this.id).text(this.name);
projects.append(option);
});
});
Run Code Online (Sandbox Code Playgroud)
PHP:
<?php
include "config.inc.php";
$sth = mysql_query(
sprintf(
"SELECT c_id,p_id,p_title FROM projects WHERE c_id = %s",
mysql_real_escape_string($_GET['id'])
)
);
$projects = array();
while($r = mysql_fetch_assoc($sth)) {
$projects[] = array('id' => $r['p_id'], 'name' => $r['p_title']);
}
print json_encode($projects);
exit;
?>
Run Code Online (Sandbox Code Playgroud)
如果您有这样的HTML:
<select id='clients'>...</select>
<select id='projects'>...</select>
Run Code Online (Sandbox Code Playgroud)
你可以有这样的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 = $('<option/>').attr('value', this.id).text(this.name);
$projects.append(option);
});
});
});
});
Run Code Online (Sandbox Code Playgroud)
然后让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;
Run Code Online (Sandbox Code Playgroud)
我没有测试过所有这些,但我认为它或多或少都是你想要的.
编辑 - 测试和工作,显然它可能不是你需要的,但它让你知道如何去做.希望能帮助到你.
编辑2 - 您的代码存在问题:
$.getJSON("../inc/get-projects.php", {id: client_id}, function(projects){
projects = $('#p_id');
projects.empty();
$.each(projects, function() {
var option = $('<option/>').attr('value', this.id).text(this.name);
projects.append(option);
});
});
Run Code Online (Sandbox Code Playgroud)
您将projects使用projects第二行覆盖传入函数的内容.我$在我的代码中使用了一个来区分这两者,这可能不是最好的方法.要修复,请将代码更改为:
$.getJSON("../inc/get-projects.php", {id: client_id}, function(data){
projects = $('#p_id');
projects.empty();
$.each(data, function() {
var option = $('<option/>').attr('value', this.id).text(this.name);
projects.append(option);
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
413 次 |
| 最近记录: |