【发布时间】:2010-12-16 23:18:44
【问题描述】:
为了在我的 HTML 表单上动态填充 DropDown 控件,我编写了使 AJAX 调用 .php 文件的代码。此 .php 文件使用单个列值填充 DropDown 控件。
在整个过程中,三个文件扮演了角色。
(1) 包含输入表单的 HTML 文件, (2) 包含基本 AJAX 代码的 .js 文件,以及 (3) 一个 .php 文件,其中包含在我的 HTML 表单上填充 DropDown 控件的代码。
下面,我分别给出了所有三个文件的必要代码。 DropDown 没有填充,因此,我想知道下面给定代码中所需的必要更正。
请注意,.js 文件中的 MakeRequest 函数接受的参数很少。这些论点是:
(1) HTML DropDown 控件名称, (2) 整个 Sql 查询。 (3) MySQL 表中的 ID 列。 (4) DropDown控件中需要填充值的实际列。
在这种情况下,例如,我引用了一个名为“ElectionCategoryMaster”的 MySQL 表,它由以下列组成:
(1) ecID Int P.K (2) ecName varchar
我将 ID 列作为参数传递,以便在用户从 DropDown 中选择 ecName 时检索此 ID 值。这个 ecID 将存储在不同的表中。
[代码:HTML 文件]
<td onactivate="javascript: MakeRequest('inCategory','SELECT * FROM electioncategorymaster', 'ecid', 'ecname');">
<select id="inCategory" name="inCategory" class="entryFormInputBoxColor">
</select>
</td>
[代码:.js 文件] [AJAX]
function MakeRequest(DropDownName, SqlQuery, IdColumnName, DisplayColumnName)
{
var xmlHttp = getXMLHttp();
xmlHttp.onreadystatechange = function()
{
if(xmlHttp.readyState == 4)
{
HandleResponse(xmlHttp.responseText);
}
}
xmlHttp.open("GET", "filldropdown.php?DropDownControlName = " + DropDownName + "&SqlQuery = " + SqlQuery + "&IdColumnName = " + IdColumnName + "&DisplayColumnName = " + DisplayColumnName, true);
xmlHttp.send(null);
}
function HandleResponse(response)
{
document.getElementById('ResponseDiv').innerHTML = response;
}
[代码:.php 文件] [填充所需的下拉控件]
<?php
//Get values
$dropdownControlName = $_GET['DropDownControlName'];
$sqlQuery = $_GET['SqlQuery'];
$idColumnName = $_GET['IdColumnName'];
$displayColumnName = $_GET['DisplayColumnName'];
echo "dfddddf";
dbconnection::OpenConnection();
$result = dbaccess::GetRows($sqlQuery);
// JavaScript code to populate the DropDown.
echo "<select name='". $dropdownControlName ."'>";
echo "<option>Select</option>";
while($row=mysql_fetch_array($result))
{
echo "<option value=<?=". $row[$idColumnName] ."?>><?=". $row[$displayColumnName] ."?></option>";
}
echo "</select>";
dbconnection::CloseConnection();
?>
【问题讨论】:
-
您是否认真地将数据库查询暴露给浏览器?我通过分数闻到了 SQL 注入攻击。
-
@gabriel:是的,你是对的。我需要改进代码。
标签: php javascript html ajax