显示数据库值而不使用Jquery重新加载页面:不起作用

时间:2011-11-01 17:18:39

标签: jquery codeigniter-2

我试图在不重新加载页面的情况下显示来自数据库的信息。我在视图中有一个下拉选择选项,当我选择任何值时,下拉列表仅显示表标题,但不显示数据库中的数据。我努力找出问题,但我失败了。

当用户选择<option value="">Select a person:</option>时,我希望jquery将数据发送到此控制器 - (测试/索引),但我不知道如何执行此操作。

请帮助我解决这些问题吗?下面是我的jQuery,标记和CodeIgniter代码。

内心:

<script type="text/javascript" src="<?php echo base_url(); ?>support/js/jquery-1.6.2.min.js"></script>
<script type="text/javascript">

    $(document).ready(function() {

        $("select[name='users']").attr("selectedIndex", 1);

        $("select[name='users']").change(function() {
            var str = $(this).val();
            if( str == "" ) {
                $("#txtHint").html("");
            }
            else {
                $.get("<?php echo base_url(); ?>test/query/str", function(data) { $("#txtHint").html(data) });
            }
       }).change();
    });
</script>

体内:

<form>
    <select name="users" >
        <option value="">Select a person:</option>
        <option value="11080101">Sumon</option>
        <option value="11080102">Donno</option>
    </select>
</form>
<br />
<div id="txtHint"><b>Person info will be listed here.</b></div>

我的控制器:

function query($id){

    $sql="SELECT * FROM attendancein WHERE attendeeid = '$id'";

    $result = mysql_query($sql);

    echo "<table border='1'>
        <tr>
            <th>date</th>
            <th>In Time</th>
            <th>In Status</th>
            <th>Class Start Time</th>
        </tr>";

    while($row = mysql_fetch_array($result))
    {
        echo "<tr>";
        echo "<td>" . $row['date'] . "</td>";
        echo "<td>" . $row['intime'] . "</td>";
        echo "<td>" . $row['instatus'] . "</td>";
        echo "<td>" . $row['classstarttime'] . "</td>";
        echo "</tr>";
    }

    echo "</table>";
}  

1 个答案:

答案 0 :(得分:1)

正如您可能理解的那样,您没有返回任何数据,因为控制器没有得到任何参数。

我并不完全熟悉CodeIgniter中的路由,但它似乎是REST的一些风格。这很好,但jQuery对查询字符串的启动比标准的RESTful路由更好。

但别担心。这只意味着您已将查询数据合并到网址中,而不是让jQuery使用查询字符串发送它。

我认为你想像这样做一个jQuery get():

$.get(
  "<?php echo base_url(); ?>test/query/" + str,
  function(data) {
    $("#txtHint").html(data);
  }
);

假设您有类似的路线:

$route['test/query/(:num)'] = yourController: