我有这个功能:
function eLookup(type, long, lat, distance) {
//var sFilter = getCompanyProductFamilies();
distance = distance * 1000;
$.ajax({
url: O.GenURL('xtmp_Maps/Get' + type + '.asp', 'long=' + long + '&lat=' + lat + '&distance=' + distance),
success: eval('plotEntity' + type)
});
}
我有另一个名为getCompanyProductFamilies的函数,我已经在上面的函数中注释掉了调用,因为有些错误,这部分是我被卡住了。
function getCompanyProductFamilies()
{
var cb = document.getElementsByClassName("PRODFAM");
var sAnd = "";
for(var i = 0; i < cb.length; i++)
{
sAnd += "comp_c_productfamily like '%," + cb[i].id.replace("pdfam_", "") + ",%' or ")
}
if(cb.length > 0)
{
sAnd = sAnd.slice(0, -4);
sAnd = " and (" + sAnd + ")";
}
return sAnd;
}
上面的函数应该获得所有具有PRODFAM类名的复选框,对于每个被检查的复选框,它应该慢慢生成SQL语句的where子句的一部分。我知道SQL注入的含义,但这不是在开放的互联网上,所以忽略它。我尝试了几种使用jQuery获取已检查的方法,但我没有做过任何工作。
正在处理的HTML示例如下:
<input type="checkbox" id="pdfam_711121" class="PRODFAM"/>
<label for="pdfam_711121" class="VIEWBOX">Local Wage Rate</label><br />
<input type="checkbox" id="pdfam_711131" class="PRODFAM"/>
<label for="pdfam_711131" class="VIEWBOX">Temporary Staff</label><br />
<input type="checkbox" id="pdfam_711341" class="PRODFAM"/>
<label for="pdfam_711341" class="VIEWBOX">Other Contractors</label><br />
上述类别中约有25个,这只是3个例子。类别的数量也可能会发生变化。我需要的功能是:
获取已检查的复选框ID列表,并构造一个字符串,该字符串可作为参数传递给top函数中的ajax调用。当ajax调用的目标接收到参数时,我可以在该页面中放置一个函数,为SQL调用创建where子句。
任何帮助都将非常感激。名为eLookup的top函数不能改变太多,但我可以添加查询字符串参数,这就是我想要做的。另一个功能与此无关。
答案 0 :(得分:0)
这是有效的代码。
function getCompanyProductFamilies()
{
var cb = document.getElementsByClassName("PRODFAM");
var sAnd = "";
var bChecked = false;
for(var i = 0; i < cb.length; i++)
{
if(cb[i].checked == true)
{
sAnd += "comp_c_productfamily like '%," + cb[i].id.replace("pdfam_", "") + ",%' or ";
bChecked = true;
}
}
if(bChecked)
{
sAnd = sAnd.slice(0, -4);
sAnd = " and (" + sAnd + ")";
}
return sAnd;
}
因为这会返回一个直接传递给查询字符串上的ASP页面的纯文本字符串,我可以加密它。如果我使用encodeURIComponent,那么传递到查询字符串是安全的,但它仍然可以改变。由于系统运行的位置并不重要,但我可能会考虑保护字符串。