0

我缩小了我之前提出的一个问题的范围,发现出了什么问题,但无法解决。

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

这不会发生,因为我通过 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 字段将设置正确的变量 - 但这为时已晚且没有好处。

所以:控制台结果:

Ajax 调用的 GET 请求

2 - ajax 完成 - 日志控制台

发布阿贾克斯托比

1 - 得到结果

...

有人帮忙吗?

4

2 回答 2

1

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

再次尝试async: false;作为$.ajaxajax 选项。

于 2012-05-23T00:23:09.130 回答
0

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

于 2012-05-23T00:22:04.017 回答