我有一个包含这些表的数据库
company
==========
id | name |
==========
1 | C1 |
2 | C2 |
3 | C3 |
position
=================
id | level | name |
==================
1 | 1 | SE |
2 | 2 | SE1 |
3 | 3 | SE2 |
4 | 1 | SA |
5 | 2 | SA1 |
3 | 3 | SA2 |
company_position
==========
cid | pid |
==========
1 | 1 |
1 | 2 |
1 | 3 |
2 | 1 |
2 | 2 |
2 | 3 |
3 | 1 |
3 | 2 |
3 | 3 |
在用户界面中,我有<select>
来显示公司名称。有一个相应的滑块应显示位置范围。在<select>
上的onChange,我希望滑块接收范围的新值(min,max,Position的名称而不是value)。我该如何解决这个问题? jQuery getJSON?我不是在寻找代码,而是一种方法!
更新 我意识到我的问题是我无法想象JSON回调数据的结构。
答案 0 :(得分:2)
我会采用AJAX方式,只需让你的onChange调用一个传递<select>
值的jQuery POST函数(这样你就可以正确过滤),以及你需要的任何其他东西。
然后在回调中,您将收到正确编码的所需值(json_encode是一个选项),用于阅读或纯文本。
但请记住,回调函数中的data
只是一个变量,如果您需要更多(例如minium和maxium值),请对所需数据进行编码,以便日后访问
希望这能帮到你!
答案 1 :(得分:1)
假设您使用所选公司对您的服务器执行$.post
。假设用户选择了公司1.然后,在服务器上,您想要查询如下:
SELECT position.level, position.name FROM position
JOIN company_position ON position.id = company_position.pid
JOIN company ON company.id = company_position.cid
WHERE company.id = ?
现在,您应该根据上面的数据设置(1, SE), (2, SE1), (3, SE2)
的结果集。我会把它作为JSON对象发回(我不知道你有什么服务器环境,所以构建这个结构取决于你):
{
"min": 1,
"max": 3,
"positions": {
"1": "SE",
"2": "SE1",
"3": "SE2"
}
}
或者,如果位置很少,您可以让客户端计算最大值和最小值,只需发送JSON:
{
"1": "SE",
"2": "SE1",
"3": "SE2"
}
用javascript计算max,min:
var max = Math.max.apply(null, Object.keys(response))
, min = Math.min.apply(null, Object.keys(response));
在你的javascript中,给定对象
var result = {
"min": 1,
"max": 3,
"positions": {
"1": "SE",
"2": "SE1",
"3": "SE2"
}
};
您可以像这样查询该对象:positions["1"] == "SE"
。所以,如果你想显示最小值和最大值的标签,你会发现min和max的值,如下所示:
var min = result.min, max = result.max
你发现他们的标签是这样的:
var minLabel = result.positions[result.min]
, maxLabel = result.positions[result.max];
答案 2 :(得分:0)
几分钟前我发布了answer。也许这会有所帮助,也许不会。
为什么不使用这样的东西:
的jQuery
$(".menu_item").mouseover(function(){
var id = $(".selected").attr("id");
var qst = "?id="+id;
var html = '';
$.getJSON('ajax/get_sub_cats.php'+qst, function(data){
var len = data.length;
for (var i = 0; i< len; i++) {
html += '<a id="subCatLink'+data[i].Sub_Cat_ID+'" href="products.php?id='+data[i].Sub_Cat_ID+'">'+data[i].Sub_Cat_Name+'</a>';
}
$(".sub_menu[id="+id+"]").html(html);
});
});
PHP
require('../_req/base.php');
$return = array();
$id = $_REQUEST['id'];
$sql = "select * from sub_cats where Main_Cat_ID = '$id'";
$result = mysql_query($sql);
while($ln = mysql_fetch_array($result)){
$return[] = $ln;
}
echo json_encode($return);
如示例所示(PHP,但您可以在asp.net上执行其他类似序列化操作),我使用json_encode。