Отображение значения базы данных без перезагрузки страницы с помощью Jquery: не работает - PullRequest
1 голос
/ 01 ноября 2011

Я пытаюсь показать информацию из базы данных без перезагрузки страницы.У меня есть опция выбора раскрывающегося списка, когда я выбираю любое значение, в раскрывающемся списке отображаются только заголовки таблиц, но не данные из базы данных.Я изо всех сил пытался выяснить проблему, но мне не удалось.

И когда пользователи выбирают <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 Ответ

1 голос
/ 01 ноября 2011

Как вы, наверное, поняли, вы не возвращаете никаких данных, потому что контроллер не получает никаких аргументов.

Я не совсем знаком с маршрутизацией в CodeIgniter, но, похоже, это немногоОСТАЛЬНОЕ.Это хорошо, но jQuery играет со строками запросов немного лучше, чем стандартная маршрутизация RESTful.

Но не волнуйтесь.Это только означает, что вы должны объединить данные вашего запроса в URL, вместо того, чтобы jQuery отправлял их, используя строку запроса.

Я думаю, что вы хотите сделать jQuery get () следующим образом:

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

Предполагается, что у вас есть маршрут, подобный следующему:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...