0

我正在使用脚本来显示数据库中的文本,这在 Chrome 中工作得很好,但在资源管理器和 Firefox 中却不行。问题可能在于特殊字符(UTF 8)。即名称选择 Peter 在 IE/FF 中工作正常并显示 peter-infomation 但 Désiree 没有显示任何 Désiree 信息(但它存在并且 Chrome 显示它),这可能是由特殊的 é 字符引起的。特此 HTML 标题和脚本代码,希望有人可以为我提供正确的解决方案?

<head>    
<link rel='stylesheet' type='text/css' href='css/ola.css'  />
<link rel='stylesheet' type='text/css' href='css/ola_table.css' />
<meta http-equiv="content-type" content="text/html; charset=utf-8"></meta>
</head>

--+--

<script>
function showUser(str, strKlas, strPer)
{
//alert("Binnen: " + str + " - Klas: " + strKlas + " - Periode: " + strPer);
if (str=="")
  {
  document.getElementById("txtHint").innerHTML="";
  return;
  } 
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("txtHint").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","getuser.php?klas="+strKlas+"&periode="+strPer+"&q="+str,true);
//xmlhttp.open("GET","getuser.php?klas=4B1&periode=1&q="+str,true);
xmlhttp.send();
}

</script>
4

1 回答 1

0

在 IE11 之前,Internet Explorer 不会自动对传递给openXmlHttpRequest 对象方法的 URL 参数中的字符进行 URLEncode。

您应该使用该encodeURIComponent方法对 URL 进行显式编码。

所以:

xmlhttp.open("GET","getuser.php?klas=" + encodeURIComponent(strKlas) + 
    "&periode="  +encodeURIComponent(strPer) + 
    "&q="+encodeURIComponent(str), true);
于 2013-08-30T19:57:25.673 回答