我已经缩小了我之前提出的一个问题并找出了什么问题,但无法解决。
我有一个变量需要在下一个事件触发之前在一个事件函数中设置。
这没有发生,因为我通过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 - 得到了结果
...
有人帮忙吗?
答案 0 :(得分:1)
我猜这是因为'false' == true
:)
再次使用async: false;
作为$.ajax
ajax选项。
答案 1 :(得分:0)
尝试使用async:false
代替async:'false'