2012-09-10 2 views
0

이 코드업데이트 기능 내부 아약스에서 매개 변수

<script type="text/javascript"> 
var nextUrlArticle = null; 

$(document).ready(function() { 
    $.get("{{ path('next_video_url', { 'id' : article.id })}}", function(result) { 
     nextUrlArticle = result.url; 
    }); 

    function getNextVideo(ext) { 
     if (nextUrlArticle) { 
      window.location.href = nextUrlArticle; 
     } 
    } 
}); 
</script> 

을했습니다 그리고 그것은 결코이 null로 초기화 있기 때문에 완전히 정상이다 "window.location.href"에 전달되지 않으며을 업데이트하는 아약스 호출을가 매개 변수이지만 asynchrone이므로 코드가 처리 될 때 효과가 없습니다.

하지만 실제로 그 nextUrlArticle이 비어 있지 않은지 확인해야합니다. 그래서이 검사를 제거 할 수 없습니다. getNextVideo은 비디오 끝에 플래시 비디오 플레이어가 호출합니다. (코드의이 부분에 손이 없습니다)

수표를 통과시키는 방법은 무엇입니까?

감사합니다.

+0

ajax 호출을 받기 전에 플래시 비디오 플레이어가 'getNextVideo'를 호출합니까? –

+0

아니, 신경 쓰지 마, 내 코드가 작동하도록되어있다, 난 그냥 불일치 결과를 얻을 때로는 때로는 작동하지 않는 경우가 있으므로 코드가 아닌 다른 곳으로 가면된다. –

답변

0

좋아, 나는 $(document).ready(function() { 외부 getNextVideo()를 배치 할 필요 .ready 함수를 호출하십시오.

알아두면 좋은 정보입니다.

0

AJAX가 성공한 후에는 업데이트 된 값으로 실행하기 위해 함수를 호출해야합니다.

$(document).ready(function() { 
    $.get("{{ path('next_video_url', { 'id' : article.id })}}", function(result) { 
     nextUrlArticle = result.url; 
     getNextVideo(); // call function after update 
    }); 

    function getNextVideo() { 
     if (nextUrlArticle) { 
      window.location.href = nextUrlArticle; 
     } 
    } 
}); 
+0

비디오가 끝났을 때이 함수를 호출 할 비디오 플레이어 인 Ajax 호출 후 함수를 호출하지 않으려합니다. –

0

아약스가 완료되기 전에 비디오가 메소드를 호출한다고 생각합니다.

한 가지 방법은 예를 들어, 페이지를로드하는 대신 아약스에서 그것을 가져 오는 동안 직접 nexturl를 전달하는 것입니다 : 비디오 플레이어 '나오지 않았어 때문에

nextUrlArticle = {{ nexturl }} //django syntax to pass context vars to template 
function getNextVideo() { 
    if (nextUrlArticle) { 
     window.location.href = nextUrlArticle; 
    } 
}