Я пытаюсь реализовать каскадные выпадающие меню в веб-приложении для каталогов. Цель состоит в том, чтобы выбрать таблицу базы данных в первом меню и отобразить столбцы в этой таблице во втором меню. Моя стратегия заключается в использовании JQuery с PHP-скриптом-помощником для запуска запроса к базе данных.JQuery каскадные выпадающие списки с php и катализатором
Jquery код:
$("#db_table").change(function() {
console.log("dbtable changed");
$("#db_field").load("[% c.uri_for('/field_get.php')%]?choice=" + $("#db_table").val());
});
PHP:
<?php
$username = "webuser";
$password = "webuser";
$hostname = "localhost";
$dbhandle = mysql_connect($hostname, $username, $password) or die("Unable to connect to MySQL");
$selected = mysql_select_db("mousesom", $dbhandle) or die("Could not load database");
$choice = mysql_real_escape_string($_GET['choice']);
$query = "SELECT column_name FROM information_schema.columns WHERE table_name = '$choice';";
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)) {
echo "<option>" . $row{'dd_val'} . "</option>";
}
?>
HTML:
Table:<select id="db_table">
<option selected value="base">Choose a Table</option>
<option value="neurons">Neurons</option>
<option value="peaks_factors">Transcription Factors</option>
<option value="peaks">Peaks</option>
<option value="peaks_selection">Selection</option>
<option value="peaks_histmods">Histone Modification</option>
</select>
Field:<select id="db_field">
<option value="Placeholder">Please Select a Table</option>
</select>
Я до сих пор проверить, что Javascript запрос стрельбы, но я не получаю ожидаемый ответ. На основании вывода журнала из тестового сервера Catalyst, кажется, скорее всего, необходимые аргументы не передаются в PHP скрипт хелперов, а не отщепившийся в параметры запроса с помощью катализатора вместо ...
[info] *** Request 8 (0.013/s) [17122] [Fri Jun 26 19:22:50 2015] ***
[debug] Path is "/"
[debug] Arguments are "field_get.php"
[debug] "GET" request for "field_get.php" from "10.21.136.40"
[debug] Query Parameters are:
.-------------------------------------+--------------------------------------.
| Parameter | Value |
+-------------------------------------+--------------------------------------+
| choice | peaks_histmods |
'-------------------------------------+--------------------------------------'
Очевидно, что это не то, что я хочу, и мне интересно, имеет ли Catalyst другой способ передать эти параметры в вспомогательный скрипт или какой-нибудь другой способ обхода проблемы. Я искал различные документы и до сих пор пришел с пустыми руками. Любая помощь будет оценена!
Это имеет смысл. Я довольно просто использовал этот подход, потому что я новичок в этом, и это первый способ, которым я столкнулся в поиске способа его реализации. Решение, которое вы предлагаете, кажется намного лучше, и я попробую его попробовать. Чтобы быть уверенным, что я на правильном пути, чтобы использовать подход JSON, мне нужно будет написать код модели для выполнения запроса БД, а затем вернуть результат как JSON и сохранить его в stash? Мне нужен Catalyst :: View :: JSON для этого? Как получить доступ к JSON в stash из jquery? Извините за вопросы новичков - опять же, я очень новичок в этом! – user3396385
Я думал, что отправил комментарий, чтобы предупредить вас, что я обновил свой ответ, но, очевидно, нет. В любом случае, см. Мой обновленный ответ ... – RET
Спасибо за обновление! Я видел ваш ответ, но не был в течение большей части прошлой недели, и я просто возвращаюсь к этому проекту. До сих пор я работал с html-фрагментами, и я думаю, что довольно просто изменить его для работы с выходом JSON на основе информации, которую вы указали выше. Не могу поблагодарить вас за вашу помощь! – user3396385