Javascript 字符串的第一个字符与%
因此,我将使用javascript向php页面发送一个字符串:Javascript 字符串的第一个字符与%,javascript,php,html,sql,Javascript,Php,Html,Sql,因此,我将使用javascript向php页面发送一个字符串: if(cp.value!=''){ s+=cp.name +" LIKE '%"+ cp.value +"%'"; console.log(s); if(sec.value!=''){ s+=" AND "+sec.name+" LIKE '%"+ sec.value +"%'"; console.log(s); } } else{ if(sec.value
if(cp.value!=''){
s+=cp.name +" LIKE '%"+ cp.value +"%'";
console.log(s);
if(sec.value!=''){
s+=" AND "+sec.name+" LIKE '%"+ sec.value +"%'";
console.log(s);
}
}
else{
if(sec.value!=''){disappear
s+=sec.name+" LIKE '%"+ sec.value +"%'";
}
}
console.log(s);
if(s.length!=0){
var connect = new XMLHttpRequest();
connect.onreadystatechange=function(){
if (connect.readyState==4 && connect.status==200){
var resu=connect.responseText;
console.log(resu);
var tab=document.getElementById("main_tab");
tab.innerHTML=resu;
}
};
connect.open("POST","../../Controller/stage.php",false);
connect.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
connect.send("s="+s);
}
}
发送的字符串如下所示:
CP_阶段(如“%90%”和扇区_阶段(如“%ait%”
但是,当我在php页面中打印请求时,我有如下内容:
选择*从CP_阶段类似的阶段'�%' 以及像“%ait%”这样的扇形阶段
我不知道为什么我的第一个数字会随着第一个%消失。
如果有人有主意,那就太棒了,谢谢 百分号是一个特殊字符。是否有任何特殊字符,如%、&、,?etc需要编码。您的“%90”已转换为Ascii值。您必须使用encodeURIComponent对这些值进行编码
s += cp.name + " LIKE '" + encodeURIComponent("%" + cp.value + "%") + "'";
请注意,encodeURIComponent不会转义”
字符。如果您的cp.value有一个”
,则必须将其替换为其编码值:%27
顺便说一下。。从客户端发送mySQL查询是个坏主意——这是一个主要的安全缺陷。仅发送值并在服务器端生成查询。正在对其进行编码。为什么不发送
sec.value
并在另一个页面上构建您喜欢的内容呢?为什么要用javascript构建MySQL查询?每个人都可以更改查询并执行sql注入。这不是拯救。不要这样做。在服务器上而不是客户端上生成查询。“我不知道为什么我的第一个数字会随着第一个%”消失-因为:我必须创建一个本地网站,这样安全性就不会有问题,因为只有一个人会有该网站。谢谢您提供此解决方案,但我会在服务器端生成查询。