【发布时间】:2015-09-13 20:56:54
【问题描述】:
我正在尝试在催化剂网络应用程序中实现级联下拉菜单。目标是在第一个菜单中选择一个数据库表,并使该表中的列出现在第二个菜单中。我的策略是使用带有 PHP 帮助脚本的 Jquery 来针对数据库运行查询。
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 帮助程序脚本,而是被 Catalyst 拆分为查询参数...
[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 是否有另一种将这些参数传递给帮助脚本或其他解决方法的方法。我一直在搜索各种文档,到目前为止,空手而归。任何帮助将不胜感激!
【问题讨论】:
标签: javascript php jquery mysql catalyst