【问题标题】:Pass accentuation on query (javascript) (GET)在查询中传递重音(javascript)(GET)
【发布时间】:2025-12-13 16:00:02
【问题描述】:

我需要在查询中传递葡萄牙语(BR)重音,这是我的 javascript 函数:

        if (str.length == 0){ 
        document.getElementById("pacientes_hint").innerHTML="";
        return;
        }
        if(str.length > 2){
                if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp = new XMLHttpRequest();
                }
                else{// code for IE6, IE5
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                }
                xmlhttp.onreadystatechange=function(){
                if (xmlhttp.readyState == 4 && xmlhttp.status == 200){
                    document.getElementById("pacientes_hint").innerHTML=xmlhttp.responseText;
                    }
                }
                xmlhttp.open("GET","pacientes/busca/"+str, true);
                xmlhttp.send();
        }

我尝试了 escape(str) 和 encodeURI 都没有成功,谢谢

@编辑:

这是php函数

function busca(){
    $q = utf8_decode(urldecode($this->uri->segment(3)));
    echo $q;
    $q = str_replace("%20", " ", $q);
    $query = $this->model_pacientes->pegarLike($q);

    foreach($query as $k){
        echo "<div id='resultados_hint'>" . "<a href='#' onclick='clicar(this.firstChild.data);'>" .$k['Prinom']. "</a></div>";
    }

}

【问题讨论】:

    标签: javascript url utf-8


    【解决方案1】:

    encodeURIComponent:

    xmlhttp.open("GET","pacientes/busca/" + encodeURIComponent(str), true);
    

    【讨论】:

    • 试过这个并得到一个javascript错误,这在控制台上返回:http://(...)/pai/index.php/pacientes/busca/%25E9 404(未找到)
    • 看起来str 不包含您期望它包含的内容。在打开连接之前alert(str) 是什么意思?
    • PS:把php函数也贴出来了
    • alert(str) 准确地说出我写的,我刚试过; “ééé”,它输出了“ééé”
    • 问题是 PHP 生成的 str 不会生成与 pacientes/busca/ 组合的现有 URL。转义以及 JavaScript 代码的其余部分似乎是正确的。