1

URL からデータを取得したいときに、この奇妙な問題が発生しました。

 $.ajax({
 url: 'URLHERE',
dataType: 'html',
success: function(data) { //function 2
    var xml = $.parseXML(data)
    $(xml).find('StopLocation').each(function() //function 3 
{
    var name = $(this).attr('name');
    var x = $(this).attr('x');
    alert(name);
    alert(x);

});   //function 3 end } //function 2 end       }); //ajax end

これは Dreamweaver では機能しますが、ブラウザーでは機能しません。AJAX がブラウザーのクロスドメインで機能しないことが原因である可能性があることを読んでいます。これは本当ですか?また、dataType を 'jsonp' に変更することもできますが、これは Dreamweaver でも機能しません。

何が間違っている可能性がありますか?それとも、この問題に AJAX 以外のものを使用する必要がありますか?

これは PhoneGap のモバイル アプリなので、jquery も使用しています。

4

2 に答える 2

3

お読みのとおり、これはクロススクリプティングの脆弱性防止機能です。JSONP を使用して回避できますが、JSONP は JSON ではありません。構文が少し異なるため、接続しているサーバーはデータを JSONP 形式で送信する必要があります。JSONP を期待して JSON を受信して​​いるのであれば、どこでも機能していないのも不思議ではありません。JSONP を期待して XML を受け取るとしたら、それはリンゴとトヨタのようなものです。

于 2013-04-23T08:04:39.653 に答える
1

PhoneGapを使用しているため、これが可能だと思います。IEでテストできます(他のブラウザではありません)

var xhr = new XMLHttpRequest();
        xhr.open("GET", "url", true);
        xhr.onreadystatechange = function() {
         if (xhr.readyState == 4) {
         var text = xhr.responseText;
         alert(text);
         }
            }
        xhr.send();

これがうまくいくことを願っています、少なくとも私にとってはそうです。この後、xml に解析できます....そして、意図したとおりに作業を続けることができます。

于 2013-04-24T07:03:23.760 に答える