2010-05-13 5 views
1

Silverlight 응용 프로그램에서 함수를 호출하려고합니다. 그것은 매우 간단한 작업이어야하지만 지금까지 내가 찾고있는 결과를 얻지 못하고 있습니다.Silverlight 4.0 응용 프로그램에서 JavaScript 함수 호출

이 내 실버 코드 :

private void button2_Click(object sender, RoutedEventArgs e) 
    { 
     HtmlPage.Window.Invoke("SayHello", new string[] { "Salut!" }); 
    } 

그리고 이것은 자바 스크립트 코드입니다 : 나는 "OK"를 누르면

function SayHello(theid) { 
     alert(eval(theid)); 
     var divStatusDiv = document.getElementById("divStatus"); 
     divStatusDiv.style.backgroundColor = "Red"; 
    } 

이 경고 메시지가 항상 "정의"가 표시하지만 색상 DIV는 반드시 Red로 변경됩니다.

항상 "정의되지 않은"상태가되는 이유는 무엇입니까? 이 텍스트 문자열 코드가 아닌이기 때문에, 그것을

답변

2

사용. 간단히 "Salut!"을 반환 할 수 있습니다. 새 문자열 대신 [] { "Salut!" } 또는 문자열 배열에 대한 json 배열을 만들 수 있습니다.

+0

C#에서 json 배열을 만들려면 어떻게해야합니까? 나는 이것을 찾았다 : http://stackoverflow.com/questions/1056121/how-to-create-json-string-in-c 이것이 내가해야 할 일인가? – Raha

+0

이제 해결되었으므로 제이슨 메시지를 만들었습니다. – Raha

1

나는 실버 라이트에 익숙하지 해요,하지만 theidSayHello의 내부 값 "Salut!"이있는 경우, 당신은하지 eval 수 있습니다. alert(eval(theid)); 줄을 alert(theid);으로 변경해야합니다.

+0

나는 이것을 시도했지만 작동하지 않습니다. 정의되지 않은 것은 내가 얻는 것입니다. – Raha

0

당신은 그냥 같은 배열 함께 전달하는 제대로 대신 전달할 수있는 JSON을 만들 필요가

alert(eval(theid.value)); 
+0

또한 성능 및 코드 삽입에 대한 영향을 줄이기 위해 eval을 사용하지 마십시오. –

+0

나는 eval이 좋은 생각이라고 생각하지 않지만 arg가 문자열의 배열로 전달된다는 것에주의하십시오. – Raha

관련 문제