2009-07-07 2 views
-1

나는 페이스 북 플랫폼에서 릴리스 된 웹 사이트를 가지고 있는데, C# .Net 2008을 사용하고 있는데 문제는 javascript arary의 코드에서 배열 요소를로드하고 elelment 요소를로드하는 것입니다.값 뒤에 코드를 가져 오는 자바 스크립트 오류

ArList = new Array('<%=ListOfWords[0]%>','<%=ListOfWords[1]%>','<%=ListOfWords[2]%>','<%=ListOfWords[2]%>'); 

나가 어레이에서 요소를 호출 할 때, 다음과 같이하는 문제 : 다음 자바 스크립트 코드를 사용

document.getElementById("WordDiv").innerHTML = ArList [0]; 

요소가 코드의 배열 뒤에 보유 inspite 값으로 설정되지 값 및 왜 배열 요소의 값을 모르겠어요 설정되지 않았습니까? 그리고 어떤 경우에는 내가 값을로드하고 모든 권리가 그래서 렌더링의 문제가 될 수 있으므로 코드의 가치는 클라이언트 측에서 볼 수 없다는 것을 알았습니까? 또는 문제는 어디에 있습니까? 그리고 내가 IE에서 응용 프로그램을 추적 할 때 나는 상태 표시 줄 보고서 자바 스크립트 오류가 사라지고 말을 한 것을 알았고 상태 표시 줄에 노란색 알리 트가 나타 났을 때 메시지를 클릭하고 메시지가 다음과 같이 나타났습니다.

문제는 body 태그의 onload 이벤트에서 배열 뒤에있는 코드의 값으로 자바 스크립트에서 함수를 호출한다는 것입니다. 문제는 추적 할 때 함수가 입력되지 않는 경우가 있습니다. 그것은 함수의 시작 부분에 경고를 퍼팅하여 나는 자바 스크립트 배열을 채울 때 함수의 코드가 표시되지 않습니다 그래서 내가 어떻게 이것을 입력하도록 DOM을 강제로 모르겠으로 표시되지 않습니다 발견 내가 코드 샘플 여기에 태그를 호출 기능 : 자바 스크립트 코드 :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head runat="server">   
    </head> 
    <body onload="IntializeArr(); return false;"> 
    <form id="form1" runat="server" > 
    ..........Some Controls............... 
    </form> 
    <script type="text/javascript" language="javascript"> 
    var TList; 
    var BList; 
     function IntializeArr() 
    {  
     TList = new Array('<%=ListofT[0]%>','<%=ListofT[1]%>','<%=ListofT[2]%>','<%=ListofT[3]%>','<%=ListofT[4]%>','<%=ListofT[5]%>','<%=ListofT[6]%>','<%=ListofT[7]%>','<%=ListofT[8]%>','<%=ListofT[9]%>'); 
     BList = new Array('<%=ListOfB[0]%>','<%=ListOfB[1]%>','<%=ListOfB[2]%>','<%=ListOfB[3]%>','<%=ListOfB[4]%>','<%=ListOfB[5]%>','<%=ListOfB[6]%>','<%=ListOfB[7]%>','<%=ListOfB[8]%>','<%=ListOfB[9]%>');   
    } 
    </script> 
    </body> 
    </html> 

C# 코드 :

public string[] ListOfB = new string[15]; 
public string[] ListofT = new string[15]; 

그리고 배열에서 코드는 데이터베이스에서 반환 된 데이터로 채워져 있으며 채워져 있습니다. 나는 그들을 추적하고 매번 채워집니다. 자바 스크립트에서 문제가 발견되었습니다. 그게 페이스 북에서 온 것인지 알 수 없습니다. 플랫폼 또는 내 코드에서하지만 그것은 내 코드에서 내가 함수의 onload 태그에 함수를 호출하고 입력되지 않은 및 문제가 그래서 어느 하나도 나를 도울 수있는 것이라고 생각합니다

희망이 우울증으로 솔루션을 찾을 수

+0

Dublicate : HTTP : // 유래합니다.com/questions/1086673/load-javascript-code-after-loading-code-behind – Canavar

+0

그래서 과거 게시물에 관심과 도움이되는 답변이 없으므로 사람들의 관심을 끌 수 있고 큰 문제가 있습니다. 이 포럼은 질문에 최근에 게시 된 최근의 답변에 따라 표시되지 않습니다 – Ahmy

+0

이것은 포럼이 아니며 아무도 귀하의 질문에 20 분 이내에 대답 할 의무가 없습니다. –

답변

1

올바르게 값을 탈출해야합니다

TList = new Array("<%=Server.HTMLEncode(ListofT[0]%>)", ...); 
+0

고마워요. 정말 고마워요. 너무 많이 도와 줘서 고마워요. 너무 감사 했어요. 왜 U 코드에서 문제가 해결 되었나요? 왜 Server.HTMLEncode합니까? 나는 이것이 많은 것들을 이해하고 감사 할 때 미래에 나를 도울 것이기 때문에 회신 할 것이기를 희망한다. – Ahmy

+0

예를 들어, ListofT [0] = "abc \"abc "; 이렇게하면 다음과 같은 마크 업이 생길 것이다 : TList = 새로운 배열 ("abc"abc ", ...)은 잘못된 자바 스크립트이며 오류가 발생합니다. Server.HTMLEncode는 """으로 변환되므로 TList = new Array ("abc " abc", ...)로 끝나고 이제는 유효한 자바 스크립트입니다. –

0

당신의 코드에 자바 스크립트 코드를 생성하고 Page.RegisterStartupScript()를 호출하는 것이 더 쉽지 않을까요? 올바른 배열을 가지고 있고 자바 스크립트 코드에서 aspx 태그를 적게 사용할 수 있습니다. 이 버그를 포함 할 수 있도록

public string ArrayToJsArray(string[] array) 
{ 
    StringBuilder s = new StringBuilder(); 
    foreach (var item in array) 
    { 
     s.Append("'" + Server.HTMLEncode(item) + "',"); 
    } 
    s.Remove(s.Length-1, 1); 
} 

public void main(){ 
    string script = "<script type=\"text/javascript\">"; 
    script += "var TList = new Array(" + ArrayToJsArray(TListArray) + ");"; 
    script += "var BList = new Array(" + ArrayToJsArray(BListArray) + ");"; 
    script += "</script>"; 
    Page.RegisterClientScriptBlock("key", script); 
} 

내가 나 자신을 실행하지 않은 나를 용서, 위의 코드를 시도하지만, 생각은 내 생각은 분명하다.

+0

나는 Page.RegisterArrayDeclaration()을 시도하고 아무것도 수정되지 않은 여전히 ​​자바 스크립트에서 볼 수없는이 솔루션에 대해 생각했지만 나는 은색 태그 코드가 자바 스크립트 코드에서 보지 못했고, 때로는 잘 작동하고 데이터를 얻었고 다른 시간에 자바 스크립트 오류가 발생하여 배열 값을 보지 못해서 문제가 무엇인지 알지 못한다. – Ahmy

+0

나는 그것을 의미한다. 모든 스크립트 코드를 코드 뒤에 문자열에 넣고 등록하십시오. 어떻게 그 일을 할 수 있습니까? 또는 배열을 등록한다는 의미입니까? 전혀 내가 게시물에서 쓴 것보다 자바 스크립트 코드가 있고 각 함수와 공용 변수를 가져 와서 javscript 코드를 등록하는 함수에 전달되는 코드에 넣을 것입니다. u가 의미하는 것과 의미있는 것을 명확히하십시오. – Ahmy

+0

나는 무슨 뜻인지 설명하는 몇 가지 코드를 제공했습니다. 배열을 초기화하는 자바 스크립트 코드를 만든 다음 registerclientscriptblock을 사용하여 페이지에 게시합니다. – Peter

0

<script> 블록 안에 aspx 태그를 렌더링 할 때 .NET에 문제가 있습니까?

HTML에 올바른 값이 렌더링 되었습니까? 그렇지 않은 경우 JS 스크립트 블록 전체를 다른 방식으로 렌더링 해보십시오.

+0