2011-02-02 7 views
2

私はいくつかのjQueryコードを持っていますが、それがドキュメント内になければ、検証はうまくいっていますが、エラーが発生します。問題のコードはここにある:jQueryコードのW3 xHTML検証エラー!

$.ajax({ 
     type: "GET", 
     url: "data.xml", 
     dataType: "xml", 
     success: function(xml) { 

      //Update error info 
      errors = $(xml).find("Errors").find("*").filter(function() 
      { 
       return $(this).children().length === 0; 
      }); 

      if (errors.length == 0) 
      { 
       statuscontent = "<img src='/web/resources/graphics/accept.png' alt='' /> System OK"; 
      } 
      else 
      { 
       statuscontent = "<img src='/web/resources/graphics/exclamation.png' alt='' /> "+errors.length+" System error"+(errors.length>1?"s":""); 
      } 

      $("#top-bar-systemstatus a").html(statuscontent); 

      //Update timestamp 
      $("#top-bar-timestamp").html($(xml).find("Timestamp").text()); 

      //Update storename 
      $("#top-bar-storename").html("Store: "+$(xml).find("StoreName").text()); 
     } 
    }); 

すべてが正常に動作し、私は非常にこれで間違っているかを理解することはできませんので、エラーが発生していないページ上の他のjQueryコードの負荷があります。ページは「ライブ」ではないため、残念ながらリンクを提供することはできません。

それが一覧表示されますエラーがここに

文書型は、要素、ここで「IMG」

そして、それが指すコードの行を許可していませんされている。

statuscontent = "<img src='/web/resources/graphics/accept.png' alt='' /> System OK"; 

それstatuscontentの問題もあります。

+3

JavaScriptコードを外部にします。 – Gumbo

+0

@Gumboはあなたのホスト主があなたにリクエスト制限を罰せない限り同意します。 –

答えて

9

XHTMLを使用しているからです。これは実際にバリデータがスクリプトタグ間のコードがXML(XHTMLはXMLのサブセットである)であるかのように動作するため無効です。これは無効なXHTMLです。タグはscriptタグに属していません。

有効にするには、CDATAを使用して、スクリプト内のXMLをエスケープします。 HTML 5では

<script type="text/javascript"> 
// <![CDATA[ 

... your code 
// ]]> 
</script> 

これは問題ではありません。あなたが新しいウェブサイトを作ったら、HTML5をXHTMLよりもお勧めします。既存のウェブサイトを変更する場合にのみ、XHTMLを使用してください。

+0

これを行うと、Firebugは '<![CDATA ['行に構文エラーを報告します。また、このWebサイトは古いブラウザのバージョンと互換性がある必要がありますので残念ながらHTML5に依存することはできません – Chris

+0

コメントに '<![CDATA ['を付けることができます。 –

1

Script and Style ElementsのHTML 5の違いを参照してください。

次はthe comparable section in the XHTML Media Types documentを参照してください。ほとんどの場合、あなたのXHTMLはHTMLとIEの互換性があります。

(私は99年に何をしたのでしょうか?それはあなたを空中に投げ捨てることです。「HTMLであるとふれなければならないとXHTMLを使うのは何ですか?」と叫びます。 HTML 4.01に戻ってください(またはHTML 5に)。

+0

これは、スクリプトエラーが発生したにもかかわらず、IEで何らかの理由でW3エラーを整理しました。 FirebugコンソールでもW3検証でもエラーもない。 – Chris