我有$ .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看起来像这样[&#34; Mon&#34;,&#34; Sat&#34;],我看到了停止ajax请求然后执行其他一些功能的例子,但我想要的是停止运行javascript代码直到发布请求完成。
答案 0 :(得分:0)
停止运行javascript代码,直到发布请求为止
这不是它的工作原理。运行一些代码后,它就会运行。 POST是异步的,这意味着您的剩余代码将不会(并且永远不会)等待它。
你实际做的是定义一个回调函数(你已经有了它,它从function(r){ ...
开始)。 POST完成后运行此函数和所有代码。
答案 1 :(得分:0)
你可以使用&#34;忙碌&#34;变量:
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;
答案 2 :(得分:0)
您可以使用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
});
答案 3 :(得分:0)