2011-07-27 7 views
0

위키피디아 API를 사용하는 페이지가 있습니다. 하지만 크로스 도메인 제한에 대해서는 JSON을 사용할 수 없으므로 JSONP을 사용합니다. 내가JSONP with AJAX 사용

<script type="text/javascript"> 
function res(data){ 
    alert(data); 
}; 
</script> 
<script type="text/javascript" src="http://en.wikipedia.org/w/api.php?action=opensearch&search=api&callback=res&limit=10&namespace=0&format=json"> 
</script> 

같은 쿼리하지만 난 AJAX를 사용하여이 사용하려는 경우 지금은 API를 사용할 수 있습니다. 내가 어떻게 할 수 있니? 어떤 사람들은 jQuery를 사용한다고 제안했지만, 누군가가 어떻게 일반 자바 스크립트에서 그것을 설명 할 수 있습니까?

비동기 XHR 호출과 함께 JSONP를 사용할 수있는 방법이 없습니까?

스크립트 요소를 생성 한 다음 제거하는 것은 피하고 싶습니다.

답변

3

JSONP 호출은 script 태그를 사용하므로 본질적으로 비동기 적이 지 않습니다.

sendJsonpRequest = function (url, callback) { 
    if (!(url && callback)) { return; } 

    // create script element 
    var script = document.createElement("script"), 
     jsonpCallback = "jsonp_" + new Date(), 
     done = false; 

    url = url.replace(/\&$/, "") + "&callback=" + jsonpCallback; 

    window[jsonpCallback] = function (args) { 
     callback(args); 

     // Garbage collect 
     window[jsonpCallback] = undefined; 
     try { delete window[jsonpCallback]; } catch (e) { } 
     if (head) { head.removeChild(script); } 
    }; 

    script.src = url; 
    head.appendChild(script); 
}; 
+0

왜 유 getSalt을 사용합니까()이 같은 나중에 프로그래밍 해당 태그를 추가하여 자신의 실행을 연기 할 수 있습니까? – lovesh

+0

미안하지만, getSalt()는 무엇을 의미합니까 ?? – DrStrangeLove

+0

@Mrchief는 일부 URL에서이 코드를 가져 왔습니까? 그렇다면 그 URL을 주시겠습니까? – lovesh