【发布时间】:2014-01-31 20:56:19
【问题描述】:
我正在尝试使用 php/jquery 建立一个“安全”的动态表单。我试图弄清楚如何在 URL 中编码查询结果,但也能够在浏览器中正确显示查询。我尝试在每个 for 循环中围绕数据包装 urlencode,但它会输出编码数据并禁用填充第二个下拉列表的功能。
<!-- Populate First Dropdown -->
<select id="first-choice" name="cardset">
<?php foreach ($data as $row): ?>
<option><?=htmlentities($row["name"])?></option>
<?php endforeach ?>
</select>
<br />
<!-- Populate Second Dropdown -->
<select id="second-choice" name="card">
<option>Please choose from above</option>
</select>
<!-- Jquery to Populate second and Produce image -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script language=JavaScript >
$(document).ready(function(){
$("#first-choice").change(function() {
$.get("getter.php", { choice: $(this).val() }, function(data) {
$("#second-choice").html(data);
});
});
$("#second-choice").change(function() {
var first = $("#first-choice").val();
var sec = $(this).val();
$("#image-swap").attr("src", (first !== "" && + sec !== "") ? "pics/" + first + "/" + sec + ".jpg" : "");
});
});
</script>
这是我使用上面的 jquery 填充第二个下拉列表的 getter.php 文件:
$choice = $_GET['choice'];
$sth = $db->prepare("SELECT code FROM sets WHERE name='$choice'");
$sth->execute();
$choicecode = $sth->fetchColumn();
$stmt = $db->prepare("SELECT * FROM cards WHERE code='$choicecode'");
$stmt->execute();
$data2 = $stmt->fetchAll();
?>
<?php foreach ($data2 as $row): ?>
<option><?=$row["cardname"]?></option>
<?php endforeach ?>
基本上我想对下拉列表中的数据进行编码,因为它们包含空格和撇号。我怎样才能在正确输出它们的同时仍然做到这一点?
【问题讨论】: