2011-01-19 6 views
1

사용자 브라우저에서 다른 API로 웹 요청을 보내고 결과를 다시 처리 할 수 ​​있습니까 ??웹 브라우저에서 웹 요청을

메신저 다음 아약스 코드하지만 시도는 작동하지, 난 ... 가능 여부와 내가 그것을 구현할 수있는 방법 예의 경우

$(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은 일반적인 해결 방법이지만 원격 사이트에서는이를 지원해야합니다. 또 다른 해결 방법은 도메인과 원격 도메인 사이의 다리 역할을하는 도메인의 서버 측 스크립트를 만드는 것입니다.이 스크립트는 자바 스크립트에서 보낸 AJAX 요청을 단순히 위임합니다.

+0

을 실제로 u는 URL U '를 살펴보면 다음

가와 YQL (JSON이 시간을 출력) 당신의 API의 URL과 함께 완전한 기능의 예입니다 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은 좀 더 가벼운 형식이므로 웹에 더욱 적합합니다.

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

관련 문제