停止执行,直到jquerypost完成
stop execution until jquery post is done
我对$有问题。post是我的代码:
$("#datepicker").click(function () {
var id = $("#doctor_book").val();
var url = $('#base_url').attr('data-url') + 'index.php/home/disable_days';
$.post(url, { id: id }, function (r) {
r = JSON.parse(r);
var obj = {
Mon: 1,
Tue: 2,
Wed: 3,
Thu: 4,
Fri: 5,
Sat: 6
};
var specific = new Array();
var final_array = new Array();
for (var a = 0; a < r.length; a++) {
for (var b = 0; b < Object.keys(obj).length; b++) {
if (r[a] === Object.keys(obj)[b]) {
specific.push(Object.keys(obj)[b]);
}
}
}
for (var c = 0; c < specific.length; c++) {
delete obj[specific[c]];
}
for (var key in obj) {
final_array.push(obj[key]);
}
console.log(r);
yverebi(final_array);
});
});
function yverebi(final_array) {
$("#datepicker").datepicker({
beforeShowDay: function (date) {
var day = date.getDay();
return [$.inArray(day, final_array) == -1]
}
});
$('#datepicker').datepicker("show");
}
r看起来像这样["Mon","Sat"],我看到了停止ajax请求然后执行一些其他函数的例子,但我想要的是停止运行javascript代码,直到请求完成。
停止运行javascript代码,直到完成后请求
这不是它的工作方式。一旦你运行了一些代码,它就会运行。POST是异步的,这意味着你剩下的代码不会(也永远不会)等待它
您实际要做的是定义一个回调函数(您已经有了,它从function(r){ ...
开始)。这个函数和里面的所有代码都是在POST完成后运行的。
您可以使用jquery-post的不同回调方法。
$.post( "example.php", function() {
alert( "success" );
})
.done(function() {
alert( "second success" );
})
.fail(function() {
alert( "error" );
})
.always(function() {
alert( "finished" );
});
无论你想要哪种方法。我认为对于您的情况,您可以使用done()方法。
您可以将代码更改为
$.post(url, { id: id })
.done(function(r){
// your code
});
您所说的叫做承诺。每当异步任务完成后,就会使用promise执行后续任务。
这同样的东西有时也可以用于您自己的自定义函数。
参考文章
您可以使用"繁忙"变量:
var busy = false;
$.post(url, {id: id}, function(r){
if(busy) return false;
var busy = true;
/*rest of your code*/
/* on your $.post callback : */
var busy = false;
相关文章:
- 如何使用jquery在填充自动完成的值后使文本框只读
- jQuery UI自动完成突然停止工作
- 如何通过php页面将数据库值检索到jquery自动完成框中
- 如何确定javascript已经完成了某些操作.ios上的
- Rails/JSON:如何将JSON用于jquery UI自动完成表单
- 在数据提取完成之前进行页面渲染
- jQuery自动完成阻止选择后聚焦
- Jquery UI自动完成无法工作
- 错误:对象没有't支持'自动完成'
- 将谷歌自动完成地址信息放在页面上,而不是表格中
- Highchart:endOnTick没有完成xaxis的最大极限设置
- javascript中的命名空间,IDE中支持代码完成/内容辅助's
- 动画完成后的TweenMax
- 添加自定义标记以自动完成
- 角度异步http自动完成
- Don'不允许将焦点集中在自动完成的选择上
- 如何将JSON数据源适合Jquery自动完成小部件
- 如何在自动完成时设置属性标题
- 对象不支持属性或方法“自动完成”
- 停止执行,直到jquerypost完成