AJAX를 사용하여 일부 공개 API에 액세스하고 싶지만 때로는 서버 측에 코드를 전혀 포함할 생각이 없기 때문에 자신만의 프록시 서비스를 구축하고 싶지 않은 상황에 직면한 적이 있습니까? 귀찮은 브라우저의 동일 출처 정책으로 인해 Ajax 호출이 불가능합니다.
예를 들어 날씨가 편안한 API에 액세스하려는 경우 GET으로 직접 이동하면
$.get("http://m.weather.com.cn/data/101010100.html")
이 질문 보기 저는 모두가 그것에 익숙하고 자연스럽게 해결책을 찾을 것이라고 믿습니다. 그러나 여기서는 서버 측 코드를 건드리고 싶지 않습니다. 저는 jsonp를 사용할 것이지만 서버 측에서는 그렇습니다. 계약을 이행하지 않습니다.
주인공인 yahoo가 제공하는 jsonp 프록시를 소개할 시간입니다: http://query.yahooapis.com/v1/public/yql
교차 도메인 액세스를 구현하는 코드: http: //jsfiddle.net/whitewolf /4UDpf/9/
html:
< script type="text/javascript" src="http://ajax.cdnjs.com/ajax/libs/json2/20110223/json2.js">
js:
$(function(){
$.getJSON("http://query.yahooapis.com/v1/public /yql", {
q: "url="http://m.weather.com.cn/data/101010100.html"",
형식: "json"
에서 json에서 * 선택 }, function(data) {
var $content = $("#content")
if (data.query.results) {
$content.text(JSON.stringify(data.query.results) )); else {
$ content.text(' 해당 코드 없음: ' 코드)
}); >효과:
Multiple 말할 필요도 없이 모두가 jsonp의 원리를 알고 있다고 믿습니다.