更新函数内ajax中的参数

时间:2012-09-10 10:10:31

标签: jquery ajax

我有这段代码

<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”,这是完全正常的,因为它是用null初始化的,并且有一个更新参数的ajax调用但是因为它是asynchrone它没有效果处理代码时。

但我真的需要检查nextUrlArticle是否为空,所以我无法删除该检查。 getNextVideo将由视频结尾处的Flash视频播放器调用。 (我没有掌握这部分代码)

如何进行检查通过?

感谢。

3 个答案:

答案 0 :(得分: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;
        }
    }
});

答案 1 :(得分:0)

我认为视频在ajax完成之前调用该方法。

一种方法是在加载页面时直接传递nexturl而不是从ajax获取,例如:

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

答案 2 :(得分:0)

好的,我需要将getNextVideo()放在$(document).ready(function() {外面,因为视频播放器无法调用.ready中的功能

很高兴知道。