0

ajaxで他サイトのデータにアクセスしようとして失敗しました。シナリオは、フォームでサイトにデータを投稿すると、サイトにリダイレクトされ、正しいデータが表示されるというものです。私がやりたいことは、スクリプトで ajax を使用してそのデータをフェッチすることです。Access-Control-Allow-Originヘッダーを追加できるようにサーバー側でスクリプトを変更できないことを明確にしたいのです。

データを取得するためのトリックやハックはありますか???

$(document).ready(function(){
                $.ajax({
                    type: 'POST',
                    url: 'http://somedomain.com/FlightStatus.aspx',
                    data: {ArrFltStatus:'KDU',DepFltStatus:'ISB',DropDownDay:'today',Submit:'Proceed'},
                     success: function(data){
                        alert(data);
                    },
                    error:function(xhr,err){
                        alert("readyState: "+xhr.readyState+"\nstatus: "+xhr.status);
                        alert("responseText: "+xhr.responseText);
                    }
                });
            });
4

4 に答える 4

2

JSONpインターフェースがある場合は、それを使用します(ただし、POSTでは機能しません)。

それ以外の場合は、JavaScriptが同じドメインのリソースにアクセスできるように、リモートアクセスを実行するプロキシスクリプトがサーバーに必要です。

于 2012-05-05T12:08:27.837 に答える
0

クロスドメインリソースをリクエストするときは、ajaxオプションでdataType:'jsonp'属性を使用する必要があります。

于 2012-05-05T12:06:13.923 に答える
0

スクリプトを使用してローカル マシン上のデータを取得していたときにも同じ問題に直面しましたが、データを要求していたサーバーに呼び出しスクリプトをアップロードすると、これが適切に機能します...

これは、ドメインのセキュリティが原因で、ホスティング サーバーからデータを取得できませんでした..

于 2012-05-05T12:27:45.800 に答える
0

クロスドメイン リクエストは JSONP でのみ実行でき、JSONP は GET のみをサポートし、$.ajax のデフォルトは GET であるため、タイプを設定する必要はまったくありません。

$.ajax({
   url: 'http://somedomain.com/FlightStatus.aspx',
   data: {ArrFltStatus:'KDU',DepFltStatus:'ISB',DropDownDay:'today',Submit:'Proceed'},
   dataType : 'jsonp',
}).done(function(data) {
     alert(data);
});

JSONP ではエラー ハンドラが起動されないため、JSONP も使用する必要はありません。

データを要求しているサービスが JSONP をサポートしていない場合は、Yahoo の YQL を使用して、JSONP 形式でデータを取得できるパイプをセットアップできます。

于 2012-05-05T12:40:57.777 に答える