变量未通过Ajax调用及时更新

时间:2012-05-23 00:17:48

标签: jquery ajax datepicker

我已经缩小了我之前提出的一个问题并找出了什么问题,但无法解决。

我有一个变量需要在下一个事件触发之前在一个事件函数中设置。

这没有发生,因为我通过Ajax调用检索变量。即使我认为我的所有ajax设置都正确(?) - 它也不会发生。我在Firebug中使用控制台日志记录,其中包含“2”的控制台日志记录在应该首先进行的其他日志条目之前(其中包含“1”)。

它是一个datepicker实例的一部分,带有ajax调用。完整代码如下。顺便说一句 - 我已经取出了ajax调用,并插入了一个硬编码变量进行测试 - 它完美无缺。所以这是ajax无法正常工作。

变量'varDate'在文档就绪函数之外声明:

<script type='text/javascript'>
 var varDate = 'toby';
$(document).ready(function(){

...以及此处的主要代码

$('.subject-date-pick').datetimepicker({
    timeFormat: 'hh:mm:ss',
    startDate:'01/01/1996',
    clickInput:true,
    beforeShow: function(input,inst) {

        var source = $("#" + inst.id).attr('source');
        var source_id = $("#" + inst.id).attr('source_id');
        var thing = $.ajax({
            type: 'GET', 
            url: 'ajax_get_unavailable_dates.php',
            dataType: 'text',
            async: 'false',
            global: 'false',
            data: {
                source_type: source,
                source_db_id: source_id
                  },
            success: function(msg) {


                console.log("1 - got the result");

                varDate = (msg)
            }
        });
        console.log("2 - ajax complete - logging console");     
        console.log("Post Ajax"+varDate);

    },

控制台在这里做的是首先错误地记录变量(使用SECOND记录事件),然后触发datepicker的下一个事件。之后,变量IS更新 - 以及对datepicker字段的后续点击将设置正确的变量 - 但这太晚了,没有好处。

所以:控制台结果:

GET请求Ajax调用

2 - ajax complete - 日志记录控制台

发布Ajaxtoby

1 - 得到了结果

...

有人帮忙吗?

2 个答案:

答案 0 :(得分:1)

我猜这是因为'false' == true:)

再次使用async: false;作为$.ajax ajax选项。

答案 1 :(得分:0)

尝试使用async:false代替async:'false'