我缩小了我之前提出的一个问题的范围,发现出了什么问题,但无法解决。
我有一个变量需要在下一个事件触发之前在一个事件函数中设置。
这不会发生,因为我通过 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 - 得到结果
...
有人帮忙吗?