Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 字符串的第一个字符与%_Javascript_Php_Html_Sql - Fatal编程技术网

Javascript 字符串的第一个字符与%

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

因此,我将使用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!=''){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注入。这不是拯救。不要这样做。在服务器上而不是客户端上生成查询。“我不知道为什么我的第一个数字会随着第一个%”消失-因为:我必须创建一个本地网站,这样安全性就不会有问题,因为只有一个人会有该网站。谢谢您提供此解决方案,但我会在服务器端生成查询。