2011-02-10 9 views
2

私はグーグルで回っていますが、この問題の解決策を見つけることはできません。 IEの開発者ツールは、この面でもあまり役に立ちませんでした。 XML文書のためのこのコードは、AJAXを介して返さInternet Explorer 8のjQueryの.find()。lengthの問題

はサファリ、クロムとFirefoxで動作:

$(data).find('Ticket').length; 

コード戻り、例えば、番号3

は同じコードがインターネットに0を返しますExplorer 8.なぜですか?

私は疑いなく、a)IEの奇妙なものか、b)他のブラウザが許しているコードの誤りがあるという単純な説明があります。

+2

'find'はセレクタを期待しています、これはxmlドキュメントですか?カスタムタグを使用していますか? –

+2

「チケット」とは何ですか? – BoltClock

+0

http://www.w3schools.com/jsref/jsref_length_string.asp ---ブラウザのサポートがあり、lengthプロパティはすべての主要なブラウザでサポートされています。 –

答えて

0

$(data).find('ticket').size()を試してください。これは、$(data).find('ticket').lengthと同じ結果を返します。

+0

この提案をありがとう。 .length:0と同じ結果を返します。 –

+0

size()はjQuery 1.8以降で廃止されました。 –

0

編集:次の答え。

ない限り、IEは異なり、他のブラウザよりもXMLをつかむ

$('Ticket', data).length; 

それはカスタムタグ(XML)とIEでの空

+0

優秀なアイデア。 これは長さ()を使用することをお勧めします。私はちょうど今試しましたが、IEはデータが空でないことを示しています。アラート経由で正しいxmlを返します。 –

+0

私の答えは – Phil

3

検索doesntの仕事であれば、Firefoxやクロム、アラートが($データ)を参照してくださいあなたは、ActiveXオブジェクト

変数「XML」あなたの要求から返されたXMLとは何かあると仮定するとを構築

var data; 

    if ($.browser.msie) 
    { 
     data = new ActiveXObject("Microsoft.XMLDOM"); 
     data.async = false; 
     data.loadXML(xml); 
    } 
    else 
    { 
     data = xml; 
    } 
    //your code here 
+0

でしたこれはとても便利でした。これはうまくいかなかったが、それは私を答えに導いた。ありがとう、トン。 –

+0

なぜこれがOPのために機能しなかったのか分かりません。私の場合、これは完璧に機能し、何時間もIEの壁に頭を抱えた後、私の正気を回復するのを助けました。 – esvendsen

0

まず、find()は、おそらくそれはどのような場合でも

2011年2月には戻っていなかったが、IE8での実際の作業ではありません、私は今日、まさにこの問題を抱えていたし、私のためにそれを元のAjaxリクエストによって引き起こされました。私はdataType: 'xml'の代わりにdataType: 'html'を持っていました。

愚かな間違いですが、チェックする価値があります。

関連する問題