2012-03-22 4 views
0

JS가 말한대로하지 않는데 문제가있었습니다. 나는 왜 일을 할 수 없었지만, 이제는 내 스크립트 infact이 잘 작동한다는 것을 알았습니다. 실제로 스크립트를 호출하는 AJAX와 관련이 있습니다.JS가 AJAX 호출을 통해 제대로 실행되지 않습니다.

파일을 가져 와서 표시하는 페이지는 잘못 표시되는 페이지입니다. 내가 정상적으로 스크립트에 액세스하면 완벽하게 작동합니다.

이 문제를 일으킬 수있는 AJAX 요청과 관련이 있습니까? S?

효과를 보려면 여기를 참조하십시오.

이 이미지는 올바른 :이 잘못

http://i39.tinypic.com/34fdvu8.jpg

(단지 아약스를 통해 호출 및 표시 동일한 스크립트 인) :

http://i43.tinypic.com/2uysl6b.jpg

빨간 줄이 괜찮습니다. 파산 부분은 아약스 요청에서 녹색 막대가 100 %로 나오지만 직접 스크립트를 볼 때 20 %로 나온다 (20 %는 정답임).

왜 이런 생각일까요?

<head> 
<script type="text/javascript"> 

    function percentage(){ 
     var perc = Math.round((500/2500) * 100); 

     if(perc > 100) 
     {perc = 100;} 

     else if(perc < 0) 
     {perc = 0;} 
     d = document.getElementById('health'); 
     d.style.width = perc + "%"; 
    }; 
    onload = percentage; 
</script> 
</head> 
<body> 
<div style="width:50%;background-color:red;min-height:15px;"> 
     <div id="health" style="background-color:green;min-height:15px;"></div> 
    </div> 
</body> 
+0

당신이 게시 한 코드에는 AJAX 요청이 없습니다를 유발하기 때문에, 직접 함수를 실행해야합니다 ... –

+0

음, AJAX 요청은 작동하지만 그렇게 생각하지 않았습니다. 여기에 있습니다 : http://www.paste.to/MzYyMzM0이 특정 요청에 대해 GET 정보를 보내지 않습니다. – Sir

+0

AJAX는 백분율 함수를 호출하지 않고 뭔가를 읽고 내부 HTML로 삽입합니다. 게시 한 샘플과 어떤 관련이 있습니까? 실제로 샘플 HTML을 innerHtml로 삽입하려고 시도 할 가능성이 있습니까? –

답변

1

이것은 위험하지만 유용 할 수 있습니다.

$.get('http://url', function(data) { 
    // .. your load logic hear 

    // this line will execute all your script tags 
    eval($(data).find('script').text()); 
}) 

참고 : 당신은 여전히 ​​당신의 자바 스크립트 (적발되지 않을 것이다) 그 함수의 온로드

+0

을 가져야했다는 것을 몰랐는데 어떻게 그 위험한 말을하니? – Sir

+0

http://stackoverflow.com/questions/197769/when-is-javascripts-eval-not-evil – rkw

1

innerHTML을 사용하면 삽입하려고 "내부 HTML 문서"의 "온로드"와 관련된 스크립트 실행되지 않습니다 설정 :

  • 에는 일반 HTML 요소를 자식으로 HTML/HEAD가없는 수 - 그래서 것이다 (당신이하지 않고 IMG) 만 최고 수준의 몸 - (예 http://poeticcode.wordpress.com/2007/10/03/innerhtml-and-script-tags/ 참조)
  • 도 온로드 이벤트를해야합니다 더 내부 요소가없는
  • 일부 브라우저도 innerHTML을위한 스크립트를로드하지 않습니다를 무시.

당신은 (이 innerHTML을 삽입하는 경우) innerHTML을 설정 한 후 "비율"기능을 실행하거나 (이 완료 페이지가 될 것이기 때문에 잘 작동합니다) iframe에 HTML 렌더링, 또는 구조 조정 코드 데이터 및 스크립트 그렇게 할 수 있습니다 별도로 제공되고 적절히 배선됩니다.

+0

iframe이 유일한 방법입니까? : S – Sir

+0

당신의 목표가 완전한 페이지를 렌더링하는 것이라면 - 예, Iframe만이 정상적인 페이지의 행동을 줄 것입니다. 당신의 목표가 다른 것보다 가능성이 있다면 그렇게하는 다른 방법이 있습니다.조언을 얻기 위해 달성하고자하는 바를 진술하는 새로운 질문을 만들어야합니다. –

+0

글쎄, 그냥 JS를 통해 계산 div의 너비를로드하고 싶습니다 - 내가 iframe =/ – Sir

관련 문제