2013-05-16 2 views
1

Page_Load에 javascript 함수를 등록하려면 다음 코드를 사용하십시오 (Page_Init에서도 시도했습니다).Page_Load에서 jQuery 호출 오류

protected void Page_Load(object sender, EventArgs e) 
    { 
     String switchAction = "<script language='javascript'>switchactionpanel(" + (int)((Global.upAction)Enum.Parse(typeof(Global.upAction), Global.ProfileAction.ToString())) + ")</script>"; 
     Page.RegisterClientScriptBlock("switchaction", switchAction); 
    } 

을하지만 페이지가로드 내가 오류를 수신하고 때 : 자바 스크립트는 페이지의로드의 매개 변수를 기반으로되어 도시에 숨겨진에서 두 개의 패널 스위치 $가 정의되어 있지 않습니다.

Firebug에서 보았지만 jQuery 파일이로드되는 중 .Net 탭에로드되는 첫 번째 파일은 페이지 자체입니다. 같은 코드가 다른 페이지에서 작동하기 때문에 jquery가 정확하다는 것을 알고 있습니다. 페이지가로드 될 때 RegisterClientScriptBlock이 페이지 수명주기에 배치되어 올바르게 작동해야합니까? 아니면이 모든 잘못에 대해 내가 갈 건가요? <script type="text/javascript"...

죄송이 코멘트가 아닌 대답 했어야 :이 관련이 있지만 난 항상 사용하는 경우

답변

1

삽입 된 스크립트가 JQuery 참조 후에 삽입되는지 확인하면됩니다.

대신 RegisterStartupScript을 사용하십시오.이 태그는 </form> 닫기 태그 앞에 스크립트 태그를 삽입합니다.

+0

대단히 감사합니다. 완벽하게 일했습니다. 그래서 바로 직선을 얻으려면, 페이지가로드 된 후에 javascript를 실행하려면 올바른 StartupScript를 사용하십시오. 이 변경 사항은 특별히 내 코드와 관련이 없습니다. – mattgcon

+0

@mattgcon 예, 정확하게. – McGarnagle

0

확실하지.

+0

누락되었지만 여전히 문제를 해결하지 못했습니다. Firebug에서 오류가 발생하고 페이지가로드 된 후 Firebug 콘솔에 들어가면 $가 정상적으로 작동합니다. – mattgcon

+0

입니다. 그런 다음 소스를 볼 때이 스크립트가 jQuery 파일보다 먼저 호출된다고 가정합니다. '$'를 정의하기 위해 먼저 jQuery 스크립트가 호출되도록 재구성해야한다. –

0

나는 그것이 당신이 사용하는 레지스터 기능과 관련이 있다고 생각한다. RegisterClientScriptBlock 대신 RegisterStartupScript을 사용해보세요.

Page.ClientScript.RegisterStartupScript(this.GetType(), "switchaction", "<script language='javascript'>switchactionpanel(" + (int)((Global.upAction)Enum.Parse(typeof(Global.upAction), Global.ProfileAction.ToString())) + ")</script>", false); 
+0

스티븐 감사합니다, dbaseman 그것을 이길,하지만 다시 감사합니다 – mattgcon