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>

window.location.hrefまた、で初期化され、パラメータを更新するajax呼び出しがあるため、完全に正常な""に渡されることnullはありませんが、非同期であるため、コードの処理時に効果がありません。

しかし、nextUrlArticleが空でないかどうかを本当に確認する必要があるため、その確認を削除することはできません。 getNextVideo、ビデオの最後にフラッシュビデオプレーヤーによって呼び出されます。(私はコードのこの部分を手に入れていません)

そのチェックに合格する方法は?

ありがとう。

4

3 に答える 3

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;
        }
    }
});
于 2012-09-10T10:12:16.993 に答える
0

ビデオはajaxが完了する前にメソッドを呼び出していると思います。

1つの方法は、ajaxから取得するのではなく、ページの読み込み中にnexturlを直接渡すことです。次に例を示します。

nextUrlArticle = {{ nexturl }} //django syntax to pass context vars to template
function getNextVideo() {
    if (nextUrlArticle) {
        window.location.href = nextUrlArticle;
    }
 }
于 2012-09-10T10:21:15.980 に答える
0

わかりました。ビデオプレーヤーが.ready内の関数を呼び出すことができなかっgetNextVideo()たため、OUTSIDEを配置する必要がありました。$(document).ready(function() {

知っておくと良い。

于 2012-09-10T10:26:44.423 に答える