#jquery #codeigniter-2
#jquery #codeigniter-2
Вопрос:
Я пытаюсь отобразить информацию из базы данных без перезагрузки страницы. На мой взгляд, у меня есть выпадающий вариант выбора, когда я выбираю любое значение, в выпадающем списке отображаются только заголовки таблиц, но не данные из базы данных. Я изо всех сил пытался разобраться в проблеме, но мне это не удалось.
И когда пользователи выбирают <option value="">Select a person:</option>
, я хочу, чтобы jquery отправлял данные на этот контроллер — (тест / индекс), но я не знаю, как это сделать.
Не могли бы вы любезно помочь мне решить эти проблемы? Ниже приведен мой код jQuery, разметки и CodeIgniter.
Внутри Head:
<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:
Как вы, наверное, поняли, вы не возвращаете никаких данных, потому что контроллер не получает никаких аргументов.
Я не совсем знаком с маршрутизацией в CodeIgniter, но, похоже, это какая-то разновидность REST. Это хорошо, но jQuery немного лучше работает со строками запросов, чем стандартная маршрутизация RESTful.
Но не волнуйтесь. Это означает только то, что вы должны объединить данные вашего запроса с URL-адресом, вместо того, чтобы jQuery отправлял их с помощью строки запроса.
Я думаю, вы хотите выполнить jQuery get() следующим образом:
$.get(
"<?php echo base_url(); ?>test/query/" str,
function(data) {
$("#txtHint").html(data);
}
);
Предполагается, что у вас есть маршрут, аналогичный этому:
$route['test/query/(:num)'] = yourController:
Комментарии:
1. Большое вам спасибо, Джеспер, я только что заменил $.get(«<?php echo base_url(); ?>test/query/str» на $.get(«<?php echo base_url(); ?>test/query/» str , И он работает точно как я и хотел. 🙂
2. Прошу прощения, я перепостил ваш ответ. Я просто хотел показать точное решение проблемы. Однако я удалил свой пост и пометил ваш ответ как принятый. 🙂 спасибо