2012-02-08 9 views
1
これは、試験したすべてのブラウザで起こる

(クロム、Firefoxの、オペラ...)HTMLエンティティが認識されないとAjax

一部のHTMLエンティティが飲み込まれているから取り出され、アヤックスから取得したときに表示されていないときは表示されません。 HTMLソースファイルにハードコードされている場合、同じHTMLエンティティが表示されます。ここで


実際の出力です:(エンティティは、Webページでもコンソールで地獄を表示されません)

the entity is not display nether in the web page nor in the console


ここに期待している出力:

 
<html>
<head>
<script type="text/javascript">
function injectEntity(){
var xhr = new XMLHttpRequest();
xhr.open("POST", "entity.php", true);

xhr.onreadystatechange = function(){
if(xhr.readyState == 4){
var doc = xhr.responseXML;
console.log(xhr.responseText);
var div = document.getElementById("container");
div.appendChild(doc.getElementById("the-entity"));
}
}
xhr.send(null);
}
</script>
</head>
<body>
<a href="#" onclick="injectEntity();">inject the following entity:</a> &#146;
<div id="container">
</div>
</body>
</html>


そして、ここでエンティティを取得するために使用されるPHPファイルである:ここで

enter image description here


は、エンティティを取得するJavaScriptです。

 
<?php

header('Content-type: application/xml; charset=UTF-8');

$xml = new DOMDocument('1.0', 'utf-8');
$tag = $xml->createElement('b','&#146;');
$tag->setAttribute("id","the-entity");
$xml->appendChild($tag);
echo $xml->saveXML();

?>
+0

私の推測では、あなたが実体を交換する場合は、テキストを解析する必要があることでしょう。 'innerHTML'でテキストを解析することができます。だから、 'appendNode'の代わりに' innerHTML'を使ってコンテンツをDOMに追加してください。 –

答えて

0

あなたは&#8217;をしたい、ない&#146;(印刷できない制御文字である)

+0

ありがとうございます。これは当てはまりますが、なぜHTMLエンティティ’がHTMLソースページに置かれたときに正しく表示されるのでしょうか。 – redochka

関連する問題