2011-02-09 13 views
0

は、私は、次のAjax呼び出しを使用してだと言う:なぜこのAjaxはIE 7および8では動作しますが、FFまたはChromeでは動作しませんか?

$(document).ready(function() { 
    $.ajax({ 
     type: "GET", 
     url: "http://www.w3schools.com/xml/cd_catalog.xml", //test xml 
     dataType: "xml", 
     success: xmlParser, 
     error: alert("We can't find your XML!"), 
     asynch: true 
    }); 
}); 

function xmlParser(xml) { 

    $(xml).find("CD:lt(3)").each(function() { 

     $("#offers").append('<h1>' + $(this).find("ARTIST").text() + '</h1><p>' + $(this).find("YEAR").text() + '</p>'); 

    }); 

これは、IE 7と8で正常に動作しますが、FFやChromeでは動作しません。私は、空のXMLファイルと、これらのブラウザで次のエラーを取得する:

XML Parsing Error: no element found Location: moz-nullprincipal:{77f5fd10-d793-4d35-9a4b-b8280b704fba} Line Number 1, Column 1:

私はエラーをGoogleで検索すると、私はそれはAjaxのクロスドメインの問題が原因だと思っていました。しかし、そうであれば、すべてのブラウザで無効にならないでしょうか?どんな助けもありがたいです。私はAjax全体のこの新しいことにちょっと新鮮です。

ありがとうございます!

+2

XSSのため、chrome + firefoxは非常に厳しいと思いますが、IEが気にするかどうかはわかりません。 –

+0

「asynch」オプションo n $ .ajax呼び出しを "async"と記述する必要がありますが、それが問題の原因であるかどうかは疑問です。 –

+0

try var xmlParser = function(xml){代わりに、ajaxコードの前に置きます。 – leebriggs

答えて

0

あなたはwww.w3schools.com用のコードを書いている場合を除きあなたは(外ドメインにクライアントからのAJAX呼び出しを作っている。

をこれは、SOP(同一生成元ポリシー)の問題である可能性があります。あなたが試みることができますJSONP(サーバーが設定されている場合)を使用するか、その呼び出しをサーバー(PHP、C#など)に移動してサーバーがクライアントに代わって呼び出しを行うようにすることができます。 「SOP」と「JSONP」をグーグルで検索しています。

+0

これは私が最初に考えていたものですが、他のユーザーから、クロスドメインの問題であれば、すべてのブラウザで同じ結果が得られるというフィードバックを受けています。 –

1
error: alert("We can't find your XML!"), 

実際にエラーがあるか、ラムダ式を誤解しているためにエラーが表示されるのだろうかと思います。私が引用した行は常にポップアップエラーメッセージです。

asynch: true 

またasyncをスペルミス。あなたは実際にあなたが入力するものにもっと注意する必要があります。

+1

エラーがあった場合のみ... – tpow

+0

@cinqoTimo、それは私の関数呼び出しのように見えますが、関数ハンドルではありません。実際には、あなたのajax呼び出しが試行される前にエラー*を得るでしょう。 – Blindy

+0

これらの問題を両方とも修正すると、結果は同じになります。 –

関連する問題