2012-07-23 1 views
0

현재 웹 서비스 호출을 기능의 일부로 수행하는 ajax 사용자 정의 컨트롤이 있습니다. 매개 변수로 컨트롤을 호출하려면 어떤 웹 서비스를 전달해야합니다. 현재, .vb 파일에서 문자열 매개 변수를 사용하고 자바 스크립트로 전달하고 있습니다. 줄을 문자열로 만든 다음 eval()을 사용하여 웹 서비스 호출을 실행합니다.자바 스크립트에 웹 서비스를 문자열로 전달하는 방법은 무엇입니까?

here에서 평가가 잘못되었다는 것을 알 수 있습니다. 해당 페이지의 함수 호출과 마찬가지로 호출 할 수있는 웹 서비스를 사용할 수있는 방법이 있습니까?

참고 웹 서비스에서 메소드를 호출합니다. stringservice (매개 변수) 대신 stringservice.start (매개 변수)입니다. 그리고 문자열에 start 메소드가 없다는 오류가 발생합니다.

모든 솔루션 또는 eval을 사용하고 있습니까? 감사합니다 :)

+0

와 같이 사용 가능한 기능을 웹 서비스 객체에 번들로 묶어 두는 것이 좋습니다. 함수 문자열을 작성하는 코드를 표시하십시오. – Bergi

+0

현재는 다음과 같습니다 : 'var starter = this.WebService + '.Begin (this.ProcessID, this.ProcessName, params);'; eval (beginProcess); ' 하지만 JSON 형식을 사용해야하는 것 같습니다. 나는 그것을 들여다 볼 것이다. –

답변

1

당신의 문자열을 JSON 형식으로되어있는 경우, 당신은 안전하게 당신은뿐만 아니라 bracket syntax으로 전역 객체의 속성에 액세스 할 수 있습니다 JSON.parse

+0

고마워요! 다른 방법으로 전화를 걸 수 있습니까? –

+0

죄송합니다. 질문이 있습니다. –

+0

현재 eval에서는 'service.method (parameters);를 호출합니다. 여전히 JSON과 마찬가지로 작동합니까? –

1

를 사용하여 변환 할 수 있습니다

그러나
window[this.WebService](this.ProcessID, this.ProcessName, params); 

,

var webservices = { 
    a: function(id, name, params) { ... }, 
    b: function(id, name, params) { ... }, 
    ... 
}; 

... 

webservices[this.WebService](this.ProcessID, this.ProcessName, params); 
+0

이 메서드는 여전히 메서드 호출에 사용할 수 있습니까? 마찬가지로,'webservices [this.WebService] .Begin();'을 사용할 수 있습니까? 아니면 내가 webservice 내에서 시작 넣어 경우 작동합니다. 예 :'this.WebService = 'testservice.begin''? 도움을 주셔서 감사합니다 :) –

+0

예, 속성이 객체를 가리키면 해당 속성에 도트 구문으로 다시 액세스 할 수 있습니다. 두 번째는 작동하지 않을 것입니다. 점, 대괄호 등 잘못된 식별자 문자가 포함 된 속성 이름의 경우와 같습니다. – Bergi

관련 문제