2011-11-22 3 views
1

나는 webservice를 만들었고 자바 스크립트에서 호출하고 싶다. 내 페이지의 스크립트 관리자에 ServiceReference를 등록하고 네임 스페이스를 사용하여 webservice를 호출했다.자바 스크립트에서 webservice를 호출하여 응답을 기다린다.

제 문제는 웹 서비스에서 응답을받을 때까지 기다리고 싶다는 것입니다.

이 때문에 setInterval을 사용하려고했지만 작동하지 않습니다.

다른 방법으로이 작업을 수행 할 수 있습니까?

자세한 내용은 다음과 같습니다. 자바 스크립트에서 WebService를 호출하는 함수를 작성하면 webservice가 응답을 보낸 후에 호출 할 메소드 서명을 전달해야합니다.

var IsResponseReceived; 
function GetSomethingFromWebService() 
{ 
    IsResponseReceived = 'No'; 
    Namespace.WebServiceClass.GetMeSomething(parameter1,SuccessResponseReceiver); 
    alert(webServiceResponse); 
} 

function SuccessResponseReceiver(parameter1,parameter2) 
{ 
    IsResponseReceived = 'Yes'; 
} 

위의 코드에서 알림은 매번 '아니오'로 표시됩니다. 나는 응답을 얻을 때까지 기다려야하는 경계선과 웹 서비스 호출을 작성하려고합니다.

나는 지금 지울 까?

+0

코드를 입력하십시오. – Rodolphe

+0

또한 webservice의 응답을받을 때까지 기다리는 것이 더 구체적 일 수 있습니까? – MilkyWayJoe

답변

4

당신이 (요즘 꽤 특이한) 순수 자바 스크립트의 사용을 고려하는 경우가 jQuery (주위에 인기있는 자바 스크립트 프레임 워크의 하나)를 사용하는 것을 고려하면, 쉬운,이 코드

var strURL = "localhost/services/foobar.svc"; 
var xmlHttpReq = false; 
var self = this; 
// Mozilla/Safari 
if (window.XMLHttpRequest) { 
    self.xmlHttpReq = new XMLHttpRequest(); 
} 
// IE 
else if (window.ActiveXObject) { 
    self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); 
} 
self.xmlHttpReq.open('GET', strURL, true); 
self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
self.xmlHttpReq.onreadystatechange = function() { 
    if (self.xmlHttpReq.readyState == 4) { 
     // do whatever you want to do when your service responded 
     // you may get the response content using self.xmlHttpReq.responseText 
    } 
} 
self.xmlHttpReq.send(); 

을 고려

$.ajax({ 
    url: "localhost/services/foobar.svc", 
    success: function(data){ 
    // this is fired on successful response 
    // you will have response content in data parameter 
    } 
}); 
+0

감사하지만 웹 서비스에서 응답이 오기 전까지는 자바 스크립트 코드를 기다리고 싶습니다. 비동기 적으로 응답을 기다리지 않고 매개 변수로 전달 된 메소드 참조를 호출합니다. 내 문제는 응답을 얻을 때까지 두 번째 줄에서 코드를 실행할 수 없다는 것입니다. –

+0

설명해주십시오. ** 대기 ** 란 무엇입니까? –

+0

나는 게시물을 편집했는지 확인하십시오. –

0

XmlHttpRequest (Ajax)를 사용하고 콜백 함수에서 응답을 처리하십시오.

0

서비스를 동 기적으로 호출하려면 코드 뒤에서도 웹 서비스를 호출 할 수 있습니다. 기본적으로 메인 스레드는 서비스 응답을받을 때까지 대기합니다.

+0

내 코드에서 서버에 다시 게시하면 많은 수의 viewstate가로드되고 언로드되므로 서버 측에서 수행 할 수 없습니다. –

관련 문제