1

2 つのページがあり、ページを更新せずにいくつかのタスクを実行するために AJAX を使用しています。問題は、Internet Explorer を使用すると、値が「?」になることです。私がやろうとしているのは、カタログを作成することです。ユーザーが文字をクリックすると、他のページで SQL タスクが実行され、最初のページに結果が表示されます。

先頭ページ:

<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script>
function loadXMLDoc(myLink)
{
alert ("OK");
var xmlhttp;
alert (myLink);
if (window.XMLHttpRequest)
  {
  xmlhttp=new XMLHttpRequest();
  }    
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4)
    {
    document.getElementById("information").innerHTML=xmlhttp.responseText;
    }
  }      
xmlhttp.open("GET","select.php?data=" + myLink,true);
xmlhttp.send();
}
</script>    
</head>
<body>
<center>
<font size = "4">     
 <a href = "#" onClick = "loadXMLDoc('Ι'); return false;">Ι </a>      
 </font>
</center>    
<div id = "information">
</div>
</body>
</html>

2 番目のページ:

<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>    
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<?php
//var_dump($_GET);
//exit();
session_start();
$find = $_GET["data"];
$find = iconv("utf8", "utf8", $find);
echo "New find = " . $find;
$find = iconv("utf8", "utf8", "Ι"); //Greek character
echo "<br/>Newest find = " . $find;
?>

最初の 'echo' は疑問符 ('?') を出力し、2 番目の 'echo' は適切な文字を出力します。この問題は Internet Explorer でのみ発生し、他のすべてで機能します。「var_dump」を使用すると、次のようになります。

Internet Explorer: 配列(1) { ["データ"]=> 文字列(1) "?" }

Chrome と Mozilla: array(1) { ["data"]=> string(2) "Ι" }

AJAX ではまったく問題ありません。

何か助けてください。

4

1 に答える 1

0

この種の問題を回避する最善の方法は、実際にすべての特殊文字に HTML エンティティを使用することです。

http://www.w3.org/TR/html4/sgml/entities.html

したがって、アルファが必要な場合は、Α を使用します。コードにアルファを貼り付けるだけではありません。ただし、データベースからテキストを読み込む場合は、文字コードを調べてエンティティに変換する必要があります。しかし、HTML エンティティは常にアンパサンド、ポンド記号、文字コード値、セミコロンとして機能するため、簡単です。

于 2013-08-09T20:19:00.660 に答える