在ajax调用期间从parsedHTML中提取javascript变量

时间:2015-08-10 17:11:36

标签: javascript jquery ajax

我有一个使用javascript绘制的图表。现在当我调用ajax并调用初始化图表函数时,它不会更新图表。 所以我希望能够更新我拥有的全局变量。我找不到任何能够实现这一目标的例子。当我查看响应文本时,脚本部分似乎具有更新的值。

var num_accounts = 0

$(document).ready(function() {
    var form = $('.accounts');
    form.ajaxForm({
        success: function(response){
            data = $.parseHTML(response);
            $('.stats').html($(data).find('.stats').html());
            $('#account-body').html($(data).find('#account-body').html());
            // THIS IS WHAT I WANT TO BE ABLE TO DO 
            num_accounts = $(data).find('num_accounts').val();
            initialize_charts();
            makeClickable();
        },
        error: function(xhr, errmsg, err){
            $('#results').html("<div class='alert-box alert radius' data-alert>"+
            "Oops! We have encountered an error. <a href='#' class='close'>&times;</a></div>");
            console.log(xhr.status + ": " + xhr.responseText);
        }
    });

    $('.ui-check').change(function(){
        $(form).submit();
    });

    $('.range')
      .change( function () {
        $(form).submit()
      })
    .keyup( function () {
        $(this).change();
    });
});

1 个答案:

答案 0 :(得分:0)

它是异步的,因此全局变量将被更新,但不会像所有其他同步函数调用那样精确地在事件循环的同一刻度内。换句话说,不作为XHR响应的结果发生的同步动作将在概念上“忽略”任何更改。

换句话说,您想要对响应做的所有事情都需要在success回调中进行。这就是异步的东西是如何运作的。