【发布时间】:2012-05-23 00:17:48
【问题描述】:
我缩小了我之前提出的一个问题的范围,发现了问题所在,但无法解决。
我有一个变量需要在下一个事件触发之前在一个事件函数中设置。
这不会发生,因为我通过 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 记录事件),然后触发日期选择器的下一个事件。之后,变量 IS 更新——随后单击 datepicker 字段将设置正确的变量——但这为时已晚且不好。
所以:控制台结果:
获取 Ajax 调用请求
2 - ajax 完成 - 日志控制台
发布 Ajaxtoby
1 - 得到结果
...
有人帮忙吗?
【问题讨论】:
标签: jquery ajax datepicker