2011-10-25 7 views
0

HTMLテーブルを生成するスクリプトへのAJAX呼び出しを使用しています。Javascript innerHTML/jQuery .html()IE表示のバグ - divへのテーブルの追加

スクリプトの出力からテーブルのHTMLを取得した後、ターゲットコンテナdivのHTMLを新しいHTMLに置き換えます。

$('#table_container').html(data); またはdocument.getElementById('table_container').innerHTML(data);

Firefoxでは、テーブルは私が望むようにdiv内に表示されます。

Internet Explorerでは、テーブルが表示され、テーブルの下には余分なテキストが表示されます(通常はテーブル内のランダムな場所から10-20文字が取り出されます)。

私はW3Cバリデーターを通してajax呼び出しからHTMLを検証しました。 私は私のページのタイプにDOCTYPEを使用しています:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

はなぜIEはこの余分なテキストを表示するのでしょうか?

+1

'data'文字列には何が含まれていますか? –

+0

実際のプロジェクトにリンクする可能性はありますか? – vzwick

+0

返されるHTMLをチェックしましたか? IE – Raghav

答えて

0

根本的な問題の原因はわかりませんが、これが役立つかどうかわかりませんが、remove()とappendTo()を使用してIEが正しく処理しているかどうかを確認してください。私の経験では、これは通常よりよく動作します。

$(data).appendTo($('#table_container')); 

さらに、実際のサイトにリンクすることができれば、私はさらに助けてくれるかもしれません。

2

私は個人的にはいつもとのより良い運を持っていた:テーブルのHTMLを破壊され、あなたの文字列の一部のテキストがあるように聞こえる

$("#table_container").empty(); 
$("#table_container").append(data); 
+0

によって表示された内容を、それらの '$("#table_container ")を連鎖させることができます投稿することはできますか?empty()。append(date);' – MikeM

0

は......表のセルにある文字列の

$string = htmlentities($string); 

を使用しての提案のみんなのために

0

感謝を試してみてください。

明らかになったように、問題は表の空白のセルが原因でした。

これは、エラーが発生します。

<td></td> 

これは許容可能である:

<td> </td> 

(私には)奇妙なことは、私はフラットの.htmlファイルにHTMLをダンプしてみた場合ということでしたそれは問題ありません。しかし、JSを使って同じHTMLマークアップをdivに追加すると、問題が発生します。

C'est la IE! :-)

関連する問題