作者chrismaggie (中仔)
看板Ajax
标题[问题] 请教一个jquery 连动选单-单引号的问题
时间Tue Dec 16 22:16:50 2008
想请教一个jquery的问题,利用jquery作连动选单主要是用class1这个栏位
连动class3这个栏位,程式码如下
<script>
jQuery(document).ready(function(){
$('#class3').cascade('#class1', {
ajax: {
type: "GET",
url: 'action.php',
data: { act: 'distribution', val: $('#class3').val() }
},
template: function(item) { return "<option value='" + item.Value + "'>" +
item.Text + "</option>"; },
match: function(selectedValue) { return this.When == selectedValue; }
})
.bind("loaded.cascade",function(e,target) {
jQuery(this).prepend("<option value=''
selected
jQuery(this).find("option:first")[0].selected
=
});
});
</script>
这边会到action.php中捞出资料库来比对~然後回传class3的值回来
action.php部份如下:
case 'distribution':
$query = sprintf("SELECT DISTINCT class3 FROM c_type WHERE class1=
'$parentId' AND class3 !='' ORDER BY class3 ASC");
$result = mysql_query($query, $mio);
while ($row = mysql_fetch_assoc($result)) {
$list .= '{\'When\':\'' . $parentId . '\',\'Value\':\'' . $row["class3"] .
'\',\'Text\':\'' . $row["class3"] . '\'},';
}
break;
而问题在题我在建立新资料时.假设class1是retail,
class3栏位则是有包含单引号的字元(或一些/等敏感的字串时)-fanc's
那按照逻辑来说当我选下拉选单class1的retail的时候.class3会跑出fanc's
这样的资料.但是因为有单引号的缘故.class3栏位的部份呈现灰白色.
而把单引号去掉之後.变成fnacs,则下拉选单又正常运作了
但好像又不能避免使用者输入单引号.请问这问题可以怎麽解决呢?
因为我做的网页是有包含新增.删除.编辑跟查询等功能..
是需要利用到addslashes跟stripslashes函数吗?
就是插入资料库的栏位全都使用addslashes
然後显示资料时用stripslashes~
有更好的方法能解决吗?请高手帮帮忙.谢谢
ps:我的magic_quotes_gpc有设定为on
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.134.184.241
※ 编辑: chrismaggie 来自: 220.134.184.241 (12/16 22:52)
1F:→ TonyQ:理论上是要在读出 ' 时做一下 escape .. 12/16 23:58