2012-03-19 14 views
0

私はjquery ajaxでいくつかのxmlを解析しています。 IEを除いて、すべてのブラウザでうまく動作します。Jquery Ajax with IE

私はそれがIEがぶら下がっている場所に絞り込んでおり、それを修正する方法がわかりません。私はhtmlを取得するために使用しているjqueryに問題があるのか​​、それともxmlに問題があるのか​​、それとも何か見落としているのかどうかは分かりません。興味深いのは、xmlデータを保持する変数を警告するとき、IEはすべての情報を正しく警告しますが、それをトラバースしてデータを正しくフォーマットすることはできません。助けてください。ここで

は、私は私のXMLからデータを抽出するために使用していたコードです:

function parseXML (data) { 
     $(data).find("section").each(function() { 
      var $section = $(this), 
       photos = $section.find("photo"), 
       photoContainer = $("<div></div>", { 
        id: $section.attr("id"), 
        "class": "gallery-section" 
       }); 

      photos.each(function() { 

       var photo = $(this), 
        imageurl = photo.attr("imageurl"), 
        title = photo.find("title").text(), 
        description = photo.find("description").html(), 
        kind = photo.find("description").attr("type"); 
       icon = photo.find("icon").attr("source"); 
       iconClass = photo.find("icon").attr("class"); 

       var photoWrapper = $("<div class='photo'></div>"), 
        imageElem = $("<img />", { 
         "src": imageurl, 
         "class": "gallery-photo" 
        }), 
        photoInfo = $("<div></div>", { 
         "class": "photo-info " + kind 
        }), 
        iconInsert = $("<img />", { 
         "src": icon, 
         "class": iconClass 
        }), 
        header = $("<h1></h1>", { 
         text: title 
        }), 
        photoDescription = $("<div></div>", { 
         html: description 
        }); 

       photoInfo.append(iconInsert).append(header).append(photoDescription); 
       photoWrapper.append(imageElem).append(photoInfo); 
       photoContainer.append(photoWrapper); 

      }); 
      $("#photo-viewer-inner").append(photoContainer); 
     }); 
     var videos = "<div id='videos'></div>"; 
     $("#photo-viewer-inner").append(videos); 
     $("#videos").load("images/gallery-images/videos.html #video-inner"); 
    } 

/* Get Photos From XML */ 
var dataType; 
if ($.browser.msie) { 
    dataType = "text"; 
} else { 
    dataType = "html"; 
} 

$.ajax({ 
    type: "GET", 
    url: "images/gallery-images/gallery-images.xml", 
    dataType: dataType, 
    success: function(data, status) 
{ 
    parseXML(data); 
    alert(data); 
}, 
}); 
+0

IEはどこにありますか?そして、あなたは 'dataType:xml'を試しましたか? –

+0

関数 'parseXML'の2行目にIEがハングします。それは、XMLファイルの内容をうまく取得するようだが、それを通過し、私が必要なデータを抽出することはできません。はい、複数の異なる組み合わせでdataTypesとcontentTypesを変更しようとしました。そのような運はありません。 – jcbfshr

+0

は "class"をvarまたはプロパティ名として使用できませんが、ほとんどのブラウザはそれを受け入れますが、そうしないでください。 – Dampsquid

答えて

0

IEのJavaScriptは、クラスは、他のbrowzersが行う変数やプロパティ名として使用することはできません。このリンクには、それに関するいくつかの介入コメントがあります。bugzilla.mozillaは、IEのように見えます。

+0

私のアイコンのための私のXMLの "クラス"属性はこれをすべて捨てていますか?それとも、変更する必要がある何か他にもありますか? – jcbfshr

+0

この "class"のようなxmlのものではない:JSコード – Dampsquid

+0

wowの "gallery-section"。 OK。私はそれを動作させるために、このようなものを変更しようとすることから始めると思います。そこに助けがありますか? – jcbfshr

0

あなたのAJAX呼び出しで関数から末尾のカンマを削除します。

変更この:

$.ajax({ 
    type: "GET", 
    url: "images/gallery-images/gallery-images.xml", 
    dataType: dataType, 
    success: function(data, status) 
    { 
     parseXML(data); 
     alert(data); 
    } 
}); 

SOポスト他の引用:これ

$.ajax({ 
    type: "GET", 
    url: "images/gallery-images/gallery-images.xml", 
    dataType: dataType, 
    success: function(data, status) 
    { 
     parseXML(data); 
     alert(data); 
    }, 
}); 

「オブジェクト{}または配列[]、 あなたの作成中個々の要素をカンマで区切りますが、ここでは[a、b、c、d]のような最後の項目の後にコンマを追加して を追加します。 c]] - ECMA-262で許可されているのは ではありません。

+0

参照のためにこのリンクを確認してください:http://stackoverflow.com/questions/1819821/trailing-comma-problem-javascript –