2011-11-08 4 views
1

에 도메인 간 JSON/Ajax 호출을 구성하는 방법 :나는이 양식 웹 서비스를 간단한 웹 서비스

응답 JSON 문서를 결과
http://<remote_domain_ip>/api/v1/search/?query=the_query 

.

응답을 다시받을 수 있도록 JQuery JSON/ajax 호출을 작성/작성하는 방법은 무엇입니까?

Reponse은 형태 :

{ 
"status_code":200, 
"status_txt":"OK", 
"field1":"abc", 
"field2":"some_text" 
} 

답변

1

상황에 따라 다르다. 당신이 b.com 말에 있고 웹 서비스가있는 경우, 그러나

$.ajax('path-to-your-service/WebMethodName', data, function(r){ 
    // Success callback, you have your answer in r.d object 
}, function(e){ 
    // Error callback 
}); 

: 당신이 도메인 a.com에 말을하고 웹 서비스도 같은 장소에있는 경우에, 당신은이 방법을 간단하게 할 수 있습니다 a.com이면 Same-Domain Policy이라는 개념으로 제한됩니다. 즉, 특정 규칙을 따르지 않으면 AJAX 호출 (또는 XMLHttpRequest)을 사용하여 웹 서비스에서 데이터를 가져올 수 없습니다. 하나는 Access-Control-Allow-Origin HTTP 헤더 필드입니다. 일부 브라우저 간 문제가 있습니다. 또 다른 방법은 JSONP을 사용하는 것입니다. 서버를 지원해야합니다.

JSONP를 사용하려면 jQuery의 $.getJSON() 메소드를 사용해야하며 HTTP GET을 통해 전송 된 매개 변수와 함께 콜백 쿼리 문자열 키를 제공해야합니다. ,

$.getJSON('path-to-your-service?x=some&y=thing?callback?', function(r){ 
    // Success callback. Your JSON object would be the r parameter 
}); 

나는 당신이 웹 서비스의 창조자 경우, JSONP를 사용하는 것이 좋습니다, 당신은 .NET 프레임 워크를 사용하는 경우, 나는 또한 당신이 단순히 대신 웹 서비스의 일반 처리기 사용하는 것이 좋습니다 웹 서비스를 구성하는 데 많은 문제가 발생했기 때문입니다. 그러나, 서버 코드에서, 당신은 콜백라는 쿼리 문자열 키에 대한 들어오는 GET 요청을 확인해야하고, 만약 존재한다면, 당신은 당신이 함수 내에서 이런 식으로 JSON을 반환 포장해야합니다

callback({ 
    a: a1, 
    b: b1, 
    c: c1 
}); 

이해 JSONP를 (개념과 발생 방식)은 매우 중요합니다. 깊은 이해 없이는 미래의 유지 보수가 막대한 부담이 될 것입니다. 나는 this 질문을 읽을 것을 제안합니다.

+0

아니, 지금은 다른 도메인에 대한 호출입니다. – xybrek

-1

현재 사용중인 도메인이 아닌 것으로 가정 할 수 없습니다. remote_domain_ip에 대한 액세스 권한이 있거나 파일을 호스트 할 수있는 경우 EasyXDM을 사용할 수 있습니다. 시도 할 수있는 플래시와 관련된 비슷한 해결 도구가 있습니다. 그렇지 않으면 백엔드에서 요청을 수행해야합니다.

관련 문제