2011-01-19 10 views
1

ウェブブラウザから別のAPIにウェブリクエストを送信して、返された結果を処理することは可能ですか?ウェブブラウザからのウェブリクエスト

イム次Ajaxコードけどをしようとして動作していない、私は...それが可能かどうか、私はそれを実装することができますかはい、その場合

$(document).ready(function() { 

     $.ajax({ 
      type: "GET", 
      url: "http://api.ipinfodb.com/v2/ip_query.php?key=a9a2b0ec2c4724dd95286761777b09f1c8e82894de277a5b9d7175fa5275f2da&ip=&output=xml", 
      dataType: "xml", 
      success: function(xml) { 
       alert("sucess"); 
       $(xml).find('Ip').each(function() { 
        var ip = $(this).find('Ip').text(); 
        alert(ip); 

       }); 
      } 
     }); 

    }); 

答えて

2

によりsame origin policy restrictionに思っていたあなたはかなりありますあなた自身のドメインにのみAJAX要求を送信することに制限されています。 JSONPは一般的な回避策ですが、リモートサイトでサポートする必要があります。別の回避策は、あなたのドメインとリモートドメインの間のブリッジとして機能するあなたのドメイン上のサーバーサイドスクリプトを作成することです。そして、それはjavascriptから送られたAJAX要求を単に委任します。

+0

を実際にuはURL uを調べる場合は、」 IPが空であることに気づくでしょう。そして、ip = nullでリクエストが行われたとき、私のサーバからリクエストを送信した場合、ユーザのipを含むxmlを返します。ユーザのipを取得します。 – Rafay

+0

@ 3nigma:あなたのサーバーからリクエストを送信した場合、サーバーにクライアントのIPアドレスを取得させてURLに入れさせるだけです。私はこれがあなたが望むことをやると思います。 – Chris

+0

@Chris クライアントのIPアドレスを取得するにはどうすればいいですか? – Rafay

1

私は同じことをする必要があります。

しかし、同じサーバーにページを置く必要があります。別のサーバーに要求を送信できません。この場合、サーバー上のプロキシを使用して呼び出しを中継する必要があります。

1

あなたの独自のJSONPプロキシを作成できない場合は、そのプロキシを作成するYQL serviceを使用することができます。 YQLはあなた自身のメタデータであなたのデータをラップすることに注意してください(ただし、それを無効にする方法がない限り...)。

ところで、APIサービスからのXML出力の代わりにJSON出力を使用する必要があります。 JSONはより軽量なフォーマットなので、Webに適しています。以下は

あなたのAPIのURL(この時間JSONを出力)とYQLで完全に機能の例です:

var apiRequestUrl = "http://api.ipinfodb.com/v2/ip_query.php?key=a9a2b0ec2c4724dd95286761777b09f1c8e82894de277a5b9d7175fa5275f2da&ip=&output=json"; 
var yqlRequestUrl = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20json%20where%20url%20%3D%20%22"; 
yqlRequestUrl += encodeURIComponent(apiRequestUrl); 
yqlRequestUrl += "%22&format=json&callback=?"; 

$.getJSON(yqlRequestUrl, 
    function(jsonData) { 
     alert(jsonData.query.results.json.Ip); 
    }); 

最後に、この記事は便利来ることができます。http://www.wait-till-i.com/2010/01/10/loading-external-content-with-ajax-using-jquery-and-yql/

+0

助けのためのtnxしかし私は要求がクライアントのipでない送られるプロキシのipを得ます... – Rafay

関連する問題