从DB获取jQuery滑块值

时间:2012-02-15 15:58:22

标签: javascript jquery

我有一个包含这些表的数据库

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回调数据的结构。

3 个答案:

答案 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。